将ninject dependecyResolver用于MVC和WebAPI

Has*_*jmi 8 ninject asp.net-mvc-4 asp.net-web-api dependency-resolver

我已创建和MVC 4 Web应用程序,并决定在此应用程序中使用web api.我正在为MVC Web应用程序使用ninject依赖解析器.现在我想对web api使用这个ninject依赖解析器.但是这里提出的问题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;
Run Code Online (Sandbox Code Playgroud)

Nen*_*ird 14

有一种方法可以在MVC和ASP.NET Web API之间共享相同的容器.您只需要实现两个接口.

public class NinjectDependencyResolver : NinjectDependencyScope, IDependencyResolver, System.Web.Mvc.IDependencyResolver
   {
       private readonly IKernel kernel;

       public NinjectDependencyResolver(IKernel kernel)
           : base(kernel)
       {
           this.kernel = kernel;
       }

       public IDependencyScope BeginScope()
       {
           return new NinjectDependencyScope(this.kernel.BeginBlock());
       }
   }
Run Code Online (Sandbox Code Playgroud)

查看本文寻求解决方案: 在MVC和Web API之间共享依赖性解析器的简单方法