Windows 8和Ninject:反射方法不能在当前平台上使用

时间:2013-03-03 20:08:20

标签: reflection dependency-injection windows-runtime ninject

我有一个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框架?...)

1 个答案:

答案 0 :(得分:1)

要构建WinRT应用程序,您只能引用其他WinRT程序集,这就是为什么引用.NET 4.5版本的Ninject将无法正常工作。它看起来确实有一个WinRT版本的Ninject但它还没有发布,源代码可以在GitHub上找到。

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