我已使用Nuget Ninject.MVC3
包将Ninject集成到MVC 4项目中。我可以看到App_Start
现在包含一个名为NinjectWebCommon
的类,带有'bootstrapper'。按照标准指令,我可以将一个接口的具体实例注入控制器,调试器告诉我这是由NinjectDependencyResolver
类提供的。
但是:我无法通过查看Ninject代码找到使用标准NinjectDependencyResolver
方法将IDependencyResolver
类设置为DependencyResolver.SetResolver
的位置。所以我不确定我是不是只是无能为力,或者是否有另一种方式可以吸引我。有人可以启发我吗?
答案 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将向您展示胶水。