10

MVC 4 Web アプリケーションを作成し、このアプリで Web API を使用することにしました。MVC Web アプリに ninject 依存関係リゾルバーを使用しています。そして今、この ninject 依存関係リゾルバーを Web API に使用したいと考えています。しかし、ここで発生する問題は mvc IDependencyResolver 名前空間です:using System.Web.Mvc および Web API IDependencyResolver はusing System.Web.Http.Dependencies

どうすればこの問題を解決できますか?

最後に、私はこのようなものが欲しいです:

// Use the container and the NinjectDependencyResolver as
        // application's resolver
        var resolver = new NinjectDependencyResolver(container);

        //Register Resolver for MVC
        DependencyResolver.SetResolver(resolver);

        //Register Resolver for Web Api
        GlobalConfiguration.Configuration.DependencyResolver = resolver;
4

2 に答える 2

4

これを行う NuGet パッケージがあります。NInject、NInject.Web.Common、NInject.MVCx、および WebApiContrib.IoC.Ninject NuGet パッケージをプロジェクトに追加します。NInjectWebCommon クラスが App_Start フォルダーに作成されているはずです。依存関係のバインディングを RegisterServices メソッドに追加します。RegisterServices(kernel) 呼び出しの後の CreateKernel メソッドで、次の行を追加します。

GlobalConfiguration.Configuration.DependencyResolver = new NinjectResolver(kernel);

これにより、独自のオーバーライド クラスを作成しなくても、Ninject 依存関係リゾルバーを作成できます。簡単ですよね?

于 2016-11-23T19:16:08.363 に答える