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アセンブリのみを参照できます。これが、.NET4.5バージョンのNinjectの参照が正しく機能しない理由です。NinjectのWinRTバージョンがあるように見えますが、リリースされていません。ソースはGitHubで入手できます。

WinRTをサポートするIoCフレームワークはたくさんあります。Caliburn.MicroとMVVMLightの両方に、 MetroIoCと同様に独自のコンテナーが付属しています。

于 2013-03-04T09:52:32.107 に答える