我了解Ninject的一些功能,并且能够将它用于IoC。
当我使用NuGet向VS2010中的项目添加对Ninject的引用时,我在列表中看到了其他Ninject扩展。特别是Ninject.MVC3。另外在Ninject网站的扩展名下(http://www.ninject.org/extensions.html),我看到了Ninject.Web.Mvc。
如果我正在创建MVC3应用程序,我是否需要使用Ninject的这个扩展?我对带有类/接口的IoC的Ninject的基本使用是否需要标准库以外的任何东西?
MVC3项目中Ninject和Ninject.MVC3 / Ninject.Web.Mvc有什么区别?
答案 0 :(得分:4)
ninject.web.mvc
是ASP MVC(3)应用程序的ninject(核心)补充。基本上 - 当你想在ASP MVC项目中使用Ninject时,你应该使用它。
此扩展允许Ninject核心和ASP.NET之间的集成 MVC项目。要使用它,只需制作您的HttpApplication(通常在 Global.asax.cs)扩展了NinjectHttpApplication:
MVC 3扩展包含将DI组合根连接到MVC应用程序的关键方法 - 这意味着Ninject将负责实例化您的控制器,这些控制器依赖于其他组件(Ninjects'覆盖'使用{{1它只能用无参数构造函数创建控制器。)
在文档中提到了两种方法how to do it:在DefaultControllerFactory
中扩展NinjectHttpApliaction
或在global.asax
中使用NinjectWebCommon
类文件夹。
App_Start
还需要ninject.web.common扩展名。它包含例如ninject.web.mvc
的定义。