NinjectDependencyResolver是如何吸引的?

时间:2013-10-25 11:19:33

标签: asp.net-mvc ninject

我已使用Nuget Ninject.MVC3包将Ninject集成到MVC 4项目中。我可以看到App_Start现在包含一个名为NinjectWebCommon的类,带有'bootstrapper'。按照标准指令,我可以将一个接口的具体实例注入控制器,调试器告诉我这是由NinjectDependencyResolver类提供的。

但是:我无法通过查看Ninject代码找到使用标准NinjectDependencyResolver方法将IDependencyResolver类设置为DependencyResolver.SetResolver的位置。所以我不确定我是不是只是无能为力,或者是否有另一种方式可以吸引我。有人可以启发我吗?

1 个答案:

答案 0 :(得分:2)

IDependencyResolver附带了asp.net MVC框架,允许在控制器和其他组件中实现依赖注入(asp.net MVC在内部使用它)。

我不会在这里解释好处,但你可以阅读一篇很好的介绍here

在MVC中添加IoC框架(Ninject,Unity,StructureMap,...)时,必须将Ioc代码插入本机依赖项解析器,并实现IDependencyResolver。 DependencyResolver静态类是注册点,尤其是DependencyResolver.SetResolver(IDependencyResolver resolver)

但是现在,许多Ioc框架都带有一个MVC集成包,例如Ninject.MVC我们的StructureMap.MVC。它对我们来说更容易(而且通常更强大),而且你真的不需要知道它是如何完成的。

在repositoty NinjectMvcHttpApplicationPlugin中快速查看Ninject.Web.Mvc将向您展示胶水。