2011-07-24 7 views
2

以前は、アプリケーション開始設定コントローラファクトリでIoCコンテナの依存関係を登録しました。しかし、今は要求ごとにいくつかの依存関係を登録する必要があります。 ASP.NET MVC 3でそれを作る方法はありますか?リクエストごとの依存関係の登録

答えて

3

一般に、すべての基本IoCコンテナでも、何らかの方法でオブジェクトライフサイクル管理がサポートされています。

好きなコンテナはNinject 2.0です。ASP.NET MVC 3と一見無関係です。Ninject.MVC3というNuGetパッケージとして入手できます。

RegisterServices(IKernel)メソッドでは、解決する各タイプのスコープを定義できます。

/// <summary> 
/// Load your modules or register your services here! 
/// </summary> 
/// <param name="kernel">The kernel.</param> 
private static void RegisterServices(IKernel kernel) 
{ 
    kernel.Bind<ISomeInterface>().To<SomeImplementation>().InRequestScope(); 
} 

Ninjectを使用すると、次の利用可能なスコープのいずれかから選択することができます::

  • InRequestScope()
  • InThreadScope()
  • 次のコードは、 ISomeInterfaceが解決されているとき SomeImplementationの同じ単一のインスタンスを返すようにNinjectを設定します
  • InSingletonScope()
  • InTransientScope()

ネイトコハリは、Cache-and-Collect Lifecycle Management in Ninject 2.0という名前のブログ記事を投稿しました。あなたは間違いなくそれをチェックしたいと思います!

関連する問題