19

MVC では、インターフェイスNinjectControllerFactoryを実装するクラスを作成し、そのDefaultControllerFactory中でいくつかのバインディングを行うだけです。最後にGlobal私はそれを実行します:

ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());

しかし、ASP.NET Web API で Ninject を使用する場合はどうでしょうか? Web 上にいくつかの情報がありますが、古く、プレリリース バージョン用です。

この問題の簡単な方法はありますか?

4

4 に答える 4

19

多くの記事が古いのは、2012年6月(RCは5月31日リリース)からアプローチが変わっていないためです。Ninject MVC3 Nugetパッケージを追加してから、「IDepenencyResolver」を実装してから、実装を登録する必要があります。

最高の2つのウォークスルーは次のとおりです。

  1. http://www.strathweb.com/2012/05/using-ninject-with-the-latest-asp-net-web-api-source/
  2. http://www.peterprovost.org/blog/2012/06/19/adding-ninject-to-web-api/
于 2012-12-24T08:18:46.487 に答える
6

Ninject.Web.WebApi の現在のバージョンは、少なくとも 3.2.1.0 以降、手動で追加する必要がなくなりました。通常どおり、パッケージを追加してすべてを NinjectWebCommon.cs に登録するだけです。

于 2014-09-22T15:08:39.490 に答える
5

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/完全なソリューションを含むダウンロードする。

于 2016-04-22T06:32:25.343 に答える
1

次の手順は、Ninject を WebAPI プロジェクトで動作させるためのシャームのように機能します。

  1. Ninject.Web.WebApi NuGet パッケージをインストールします。
  2. Ninject.Web.WebApi.WebHost NuGet パッケージをインストールします。
  3. App_Start フォルダーに追加されたファイル NinjectWebCommon のメソッド「RegisterServices」に依存関係を登録します。このような:

Private static void RegisterServices(IKernel kernel)
{

  kernel.Bind <IFoo>().To <Foo>();

} 
于 2016-07-09T05:16:24.053 に答える