我有一个简单的MVC4网站,它使用ASP.NET webAPI和MVC页面。
我想对两种控制器类型都使用Ninject DI,但我想知道如何做到这一点?
我已经为WebAPI工作了Ninject DI,但是现在不确定如何优雅地共享同一内核。
我应该使用两种依赖解析器都可以引用的某种内核单例吗?
有人对此有经验吗?
干杯。
您应该IKernel
对单个应用程序级组合根使用相同的实例,可能是WebApi
或MVC
控制器。
如果您使用的是Ninject.MVC3软件包:
在文件夹NinjectWebCommon.cs
内初始化内核后App_Start
,您已经可以访问它。对于MVC控制器,您无需执行其他任何操作即可使Ninject DI正常工作。
但是对于WebAPI
控制器,您需要使用DependencyResolver
来将依赖项注入到控制器中。使用此解析器的实现,然后将其设置为所有WebAPI
控制器的解析器,如下所示:
绑定NinjectDependencyResolver
到自我(可选),里面RegisterServices
的NinjectWebCommon.cs
:
kernel.Bind<NinjectDependencyResolver>().ToSelf();
设置WepAPI
配置以使用您的解析器,通常在内部WebApiConfig.cs
:
public static void Register(HttpConfiguration config)
{
//Other initialization code
config.DependencyResolver = (new Bootstrapper()).Kernel.Get<NinjectDependencyResolver>();
}
这将适合所有共享相同控制器的方案IKernel
。
希望有帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句