使用ninject dependecyResolver为MVC和的WebAPI [英] Using ninject dependecyResolver for both MVC and WebAPI
问题描述
我已经创建和MVC 4 Web应用程序,并决定使用网络API在此应用程序。
我使用ninject依赖解析器了MVC的Web应用程序。现在我想使用网络API本ninject依赖解析器。
但问题就在这里提高MVC的IDependencyResolver命名空间为:使用System.Web.Mvc
和Web API的IDependencyResolver是使用System.Web.Http.Dependencies
让我怎么能解决这个问题?
最后,我想是这样的:
//使用容器和NinjectDependencyResolver为
//应用程序的解析器
VAR解析器=新NinjectDependencyResolver(容器); //注册为解析器MVC
DependencyResolver.SetResolver(旋); //注册解析程序网页API
GlobalConfiguration.Configuration.DependencyResolver =解析器;
有是分享MVC和ASP.NET Web API的同一容器中的一种方式。
你只需要实现两个接口。
公共类NinjectDependencyResolver:NinjectDependencyScope,的IDependencyResolver,System.Web.Mvc.IDependencyResolver
{
私人只读的iKernel内核; 公共NinjectDependencyResolver(内核的iKernel)
:基地(内核)
{
this.kernel =内核;
} 公共IDependencyScope BeginScope()
{
返回新NinjectDependencyScope(this.kernel.BeginBlock());
}
}
检查这篇文章的解决方案:
简单的方式来分享MVC和Web API 之间的依赖解析器
I have created and MVC 4 web application and decided to use web api in this app.
I'm using ninject dependency resolver for MVC web app. and now I want to use this ninject dependency resolver for web api.
but the problem raise here mvc IDependencyResolver namespace is: using System.Web.Mvc
and web api IDependencyResolver is using System.Web.Http.Dependencies
so how can I solve this issue?
finally I want something like this:
// 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;
There is a way to share same container between MVC and ASP.NET Web API. You just need to implement both interfaces.
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());
}
}
Check this article for solution: Simple Way to share Dependency Resolvers between MVC and Web API
这篇关于使用ninject dependecyResolver为MVC和的WebAPI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!