3

我有一个 Windows 8 应用程序解决方案,我正在使用 MVVM。所以我有 viewModelLocator 并且它的工作。

但是现在我也想让ninject做一些依赖注入(因为viewModelLocator实际上是一个定位器,但没有DI)

所以我去下载 .net framework 4.5 的 ninject DLL 并尝试从内核中获取一个类型的实例,如下所示:

DataSource = NinjectKernel.Get<IBudgetTrackerAppDataSource>();

其中 DataSource 是整个应用程序中使用的类。问题是执行该行时,出现以下错误:

The API 'System.Reflection.RuntimeMethodInfo.GetParentDefinition()' cannot be used on the current platform

所以我认为 Ninject 和 Windows 8 正在打架,所以问题是:我怎样才能解决这个问题?(ninject 的另一个版本?另一个 DI 框架?...)

4

1 回答 1

1

要构建 WinRT 应用程序,您只能引用其他 WinRT 程序集,这就是引用 .NET 4.5 版本的 Ninject 无法正常工作的原因。似乎确实有一个 WinRT 版本的 Ninject,但尚未发布,源代码可在GitHub上找到。

有许多支持 WinRT 的 IoC 框架。Caliburn.Micro 和 MVVM Light 都带有自己的容器以及MetroIoC

于 2013-03-04T09:52:32.107 回答