MVC3项目中标准ninject和ninject.web.mvc之间的区别?

时间:2013-03-31 18:50:08

标签: c# asp.net-mvc-3 ninject ninject.web.mvc

我了解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有什么区别?

1 个答案:

答案 0 :(得分:4)

ninject.web.mvc是ASP MVC(3)应用程序的ninject(核心)补充。基本上 - 当你想在ASP MVC项目中使用Ninject时,你应该使用它。

来自documentation

  

此扩展允许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的定义。