asp.net mvc 4でNinjectを使用することに関して、.netでGoogleから入手できる多数のドキュメントをどうするか迷っています
まず、asp.net でコントローラー ファクトリが必要かどうかを知りたいです。
また、コンストラクター注入は、MVC 4 で依存関係注入を行うことができる唯一の方法ですか? プロパティ注入とメソッド注入は、コントローラーで使用すると機能しないようです。
私は専門家ではありませんNinject
が、私が知る限り、私DataSource Interface
とEfDb Class
私のアプリケーションの残りの部分をリンクするためにのみ使用しています。
Real Application を中心に構築された優れた本が必要な場合は、Pro ASP.NET MVC 3 Framework, Third EditionNinject
を試し
てください。
また
私が通常関心を持っているコード行はほとんどありません
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null
? null
: (IController) ninjectKernel.Get(controllerType);
}
private void AddBindings()
{
ninjectKernel.Bind<IDataSource>().To<EfDb>();
}
}
次に、次のように登録NinjectControllerFactory
しますGlobal.asax.cs
。
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
ご覧のとおり、このクラスはMethod Injection
using を使用しprivate void AddBindings()
ます。これにより、フォローしている場合は非常に簡単になりますTest Driven Development (TDD)
ここのドキュメントを参照してください: https://github.com/ninject/ninject.web.mvc/wiki/Dependency-injection-for-controllers、「実行する必要がある唯一のことは、依存関係に対して Ninject バインディングを構成することです。コントローラ自体は、バインディングを追加しなくても Ninject によって検出されます。」
NInject は、コントローラの依存関係を自動的に設定します (これらのタイプのバインディングがある場合)。