为Windows运行时组件后台任务初始化mmvcross IOC

时间:2015-04-13 02:25:57

标签: windows-phone windows-phone-8.1 mvvmcross

在构建我当前的(第一个)Windows Phone应用程序时,它需要我创建一个Windows运行时组件来实现我需要的功能。为了使这个设置工作而不是将大量代码从我的PCL复制到任务类本身,我想使用我在整个应用程序中使用的MMVMCross IOC。

不幸的是,后台任务(IBackgroundTask)在完全不同的过程中执行。尝试通过Mvx.Resolve使用IOC会抛出NullReferenceException。我无法弄清楚如何初始化IOC,因为标准的“setup.cs”方法在运行时组件中不起作用。

我不需要整个MVVMCross堆栈 - 只需要IOC。

谢谢。

1 个答案:

答案 0 :(得分:0)

我终于明白了。我必须在后台任务上重新注册,但要初始化,你将在简单的IOC容器上调用基本初始化方法:

Cirrious.CrossCore.IoC.MvxSimpleIoCContainer.Initialize();

插件是一个问题,因为标准的插件机制不可用,但你可以手动注册这样的接口:

Mvx.LazyConstructAndRegisterSingleton<IMvxFileStore>(() => new MvxWindowsCommonBlockingFileStore());

当然,您仍然可以像往常一样注册其他类型和接口。