2

MVCプロジェクトでNinjectを使用しており、Ninject.Mvcの自動登録機能を使用して、アプリケーションクラスでバインディングを設定しています。ただし、これらのバインディングとは別にインスタンスを作成したい場所があります。StructureMapで実行でき、var foo = ObjectFactory.GetInstance<IFoo>();解決されます。Ninject 2に同等のものはありますか?どこにも見つからないようです。

4

2 に答える 2

6

AFAIK、NInjectにはこのような静的メソッドがないため、すべての解決はいくつかのカーネルに行く必要があります。

しかし、それは簡単に実装できます。

 class ObjectFactory
 {
     static IKernel kernel = new StandardKernel(.....);
     public static T GetInstance<T>()
     {
          return kernel.Get<T>();
     }
 }

ただし、IMO、NInjectは、サービスロケーターとしてよりもDIコンテナーとしてはるかに便利です。

于 2009-10-16T05:38:36.760 に答える
1

Common Service Locatorを、必要なものを提供するNinjectIOCの抽象化レイヤーとして使用することもできます。利点は、コンテナがニーズに合わなくなった場合に、後でコンテナを切り替えることができることです。

コードでは、次のようなものを使用できます。

ServiceLocator.Current.GetInstance<Type>();
于 2012-01-10T11:50:48.663 に答える