MVCでは、NinjectControllerFactory
インターフェイスを実装するクラスDefaultControllerFactory
を作成し、その中でいくつかのバインディングを実行します。ついにGlobal
で実行します:
ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());
しかし、ASP.NET Web APIでNinjectを使用するのはどうですか? Webにはいくつかの情報がありますが、古く、プレリリース版のものです。
この問題の簡単な方法はありますか?
多くの記事が古いのは、2012年6月(RCは5月31日リリース)からアプローチが変わっていないためです。 Ninject MVC3 Nugetパッケージを追加してから、「IDepenencyResolver」を実装してから、実装を登録する必要があります。
最高の2つのウォークスルーは次のとおりです。
Ninject.Web.WebApiの現在のバージョンは、少なくとも3.2.1.0以降、手動で追加する必要がなくなりました。いつものように、パッケージを追加して、すべてをNinjectWebCommon.csに登録するだけです。
Web Api 2の場合、これらのnugetパッケージが必要です-
_Ninject
Ninject.Web.Common
Ninject.Web.WebApi
Ninject.Web.Common.WebHost
WebActivatorEx
_
そして、NinjectWebCommon.CreateKernel(..)
を編集して含める必要があります
_RegisterServices(kernel);
GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
return kernel;
_
私はここに詳細なブログ投稿を書きました--- http://NoDogmaBlog.bryanhogan.net/2016/04/web-api-2-and-ninject-how-to-make-them-work-together/ ダウンロードする完全なソリューションを含みます。
次の手順は、NinjectをWebAPIプロジェクトで機能させるためのシャームのように機能します。
Private static void RegisterServices(IKernel kernel)
{
kernel.Bind <IFoo>().To <Foo>();
}