在构建我当前的(第一个)Windows Phone应用程序时,它需要我创建一个Windows运行时组件来实现我需要的功能。为了使这个设置工作而不是将大量代码从我的PCL复制到任务类本身,我想使用我在整个应用程序中使用的MMVMCross IOC。
不幸的是,后台任务(IBackgroundTask)在完全不同的过程中执行。尝试通过Mvx.Resolve使用IOC会抛出NullReferenceException。我无法弄清楚如何初始化IOC,因为标准的“setup.cs”方法在运行时组件中不起作用。
我不需要整个MVVMCross堆栈 - 只需要IOC。
谢谢。
答案 0 :(得分:0)
我终于明白了。我必须在后台任务上重新注册,但要初始化,你将在简单的IOC容器上调用基本初始化方法:
Cirrious.CrossCore.IoC.MvxSimpleIoCContainer.Initialize();
插件是一个问题,因为标准的插件机制不可用,但你可以手动注册这样的接口:
Mvx.LazyConstructAndRegisterSingleton<IMvxFileStore>(() => new MvxWindowsCommonBlockingFileStore());
当然,您仍然可以像往常一样注册其他类型和接口。