C# 如何在Xamarin的MVVMCross中实例化安装程序类?

C# 如何在Xamarin的MVVMCross中实例化安装程序类?,c#,android,xamarin,mvvm,mvvmcross,C#,Android,Xamarin,Mvvm,Mvvmcross,我开始学习MVVM cross,在android应用程序中,我有一个闪屏课程: [Activity(MainLauncher = true, Label = "@string/app_name", Theme = "@style/Theme.Splash", NoHistory = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orien

我开始学习MVVM cross,在android应用程序中,我有一个闪屏课程:

 [Activity(MainLauncher = true,
        Label = "@string/app_name",
        Theme = "@style/Theme.Splash",
        NoHistory = true,
        ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation,
        ScreenOrientation = ScreenOrientation.Portrait)]
    public class SplashScreen : MvxSplashScreenActivity
    {
        public SplashScreen() : base(Resource.Layout.SplashScreen)
        {

        }
    }
这是设置类:

public class Setup : MvxAndroidSetup
    {
        protected Setup(Context applicationContext) : base(applicationContext)
        {
        }

        protected override IMvxApplication CreateApp()
        {
            return null;
        }
    }
问题是调试器没有命中Setup类的构造函数,而是在初始屏幕的构造函数之后得到“未处理的异常”

编辑

我已经在PCL项目中定义了应用程序类:

public class App : MvxApplication
{
    public override void Initialize()
    {
        base.Initialize();

    }
还定义了AppStart:

 public class AppStart : MvxNavigatingObject, IMvxAppStart
        {
            public async void Start(object hint = null)
            {
                //hardcoded login for this demo
                //var userService = Mvx.Resolve<IUserDataService>();
                //await userService.Login("gillcleeren", "123456");

                ShowViewModel<MainViewModel>();
            }
        }
公共类AppStart:MvxNavigatingObject,IMvxAppStart
{
公共异步无效启动(对象提示=null)
{
//此演示的硬编码登录
//var userService=Mvx.Resolve();
//等待userService.Login(“gillcleeren”,“123456”);
ShowViewModel();
}
}
这个项目背后的主要原因是理解MVVM Cross所需和执行的代码序列,因此我提供了最少的代码,直到它成功运行而没有运行时错误。

Update 我已经更彻底地阅读了你的代码,现在我可以看到这个问题了。您将
设置
类的构造函数定义为
受保护
,这使其在激活时不可见

在Android版的MvvmCross上,魔法发生在
MvxAndroidSetupSingleton
类(请参阅)中,该类搜索您定义的
设置
类型。
FindSetupType
方法首先查找定义的
Setup
类,然后在
CreateSetup
方法
Activator中查找。CreateInstance
用于构建
Setup
实例。然而,使用的
CreateInstance
方法变量只搜索
public
构造函数,这意味着它找不到受保护的构造函数。结果是它无法构建
设置
类并崩溃

原始答案 发生这种情况的原因是您没有定义
MvvmCross
App类并初始化其他所需设置的
Core
libary。我建议您从一个或开始查看,以了解在Xamarin.Android应用程序中使用MvvmCross需要什么。

更新 我已经更彻底地阅读了你的代码,现在我可以看到这个问题了。您将
设置
类的构造函数定义为
受保护
,这使其在激活时不可见

在Android版的MvvmCross上,魔法发生在
MvxAndroidSetupSingleton
类(请参阅)中,该类搜索您定义的
设置
类型。
FindSetupType
方法首先查找定义的
Setup
类,然后在
CreateSetup
方法
Activator中查找。CreateInstance
用于构建
Setup
实例。然而,使用的
CreateInstance
方法变量只搜索
public
构造函数,这意味着它找不到受保护的构造函数。结果是它无法构建
设置
类并崩溃

原始答案 发生这种情况的原因是您没有定义
MvvmCross
App类并初始化其他所需设置的
Core
libary。我建议您从一个或开始查看,以了解使MvvmCross在Xamarin.Android应用程序中工作所必需的内容