2013-03-03 47 views
3

我有一個Windows 8應用程序解決方案,我正在使用MVVM。所以我有viewModelLocator,這是它的工作。Windows 8和Ninject:反射方法不能在當前平臺上使用

但現在我也想ninject做一些依賴注入(由於viewModelLocator實際上是一個定位器,但沒有DI)

所以我去下載.NET框架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框架?)

+0

Windows 8桌面應用程序或WinRT? – 2013-03-03 21:05:19

+0

哦,是的,忘了提及,WinRT 並且讀到你的名字,我已經看到你指出應該與WinRT合作的未發佈版本,但說實話我不知道從哪裏開始構建它:-) – 2013-03-03 23:14:17

+0

我想從你的標題中刪除標籤,但這會呈現一個空標題。你真的應該想出一個更好的標題來突出你的問題,而不僅僅是帶有連字符的單詞。 – Patrick 2013-03-04 10:13:43

回答

1

要構建WinRT應用程序,您只能引用其他WinRT程序集,這就是爲什麼引用.NET 4.5版Ninject不能正常工作的原因。它似乎有一個WinRT版本的Ninject,但它尚未發佈,源碼可在GitHub上找到。

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