我有一个XYZ模块,它主要是一个带有一些c#类的预构建的Xamarin Android java绑定库。在一个“独立”的Xamarin Android项目中它完美运行。但是现在我想在我的大型跨平台Xamarin项目中实现插件,该项目使用MvvmCross框架,并遵循MvvmCross标准模式。
XYZ模块需要为Android Application类设置基类,如下所示:
[Application]
public class Application : XYZApplication
{
public Application(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
{ }
public override void OnCreate()
{ base.OnCreate();}
}
通常没有提供应用程序类,MvvmCross Setup.cs从核心项目中获取它,CreateApp()方法从核心返回此类:
public class App : MvxApplication
{
public override void Initialize()
{
CreatableTypes().EndingWith("Service").AsInterfaces().RegisterAsLazySingleton();
RegisterAppStart<ViewModels.StartupViewModel>();
}
}
如果我没有使用ApplicationAttribute指定Application类,则XYZ模块的插件会失败。如果我这样做,那么MvvmCross框架就会失败,当它想要加载我的插件时,插件加载器会因为第一个插件而失败:
manager.EnsurePlatformAdaptionLoaded<PluginLoader>();
显示消息“无法解析类型”。
我认为问题的根源,即Application类不能有两个基类,或者不能创建两次? 也许有一个解决方案,如果你需要定义一个应用程序类,在使用MvvmCross时有一个基类。
答案 0 :(得分:2)
MvvmCross App
是一个PCL类,它提供了一个初始化和列出所有ViewModel
以及其他Model
和Service
代码的地方。
它完全独立于任何特定于操作系统的Application
或AppDelegate
个对象。
如果您需要特定于平台的Application
,请将其添加为单独的类。
我们试图在https://github.com/MvvmCross/MvvmCross/wiki/High-Level-MvvmCross-Objects
中解释一下