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

sea*_*ght 3 c# ninject ninject.web.mvc asp.net-mvc-3

我了解Ninject的某些功能,并且已经能够将其用于IoC。

当我使用NuGet将对Ninject的引用添加到VS2010中的项目中时,我会在列表中看到其他Ninject扩展。特别是Ninject.MVC3。同样在Ninject网站上的扩展名(http://www.ninject.org/extensions.html)上,我看到了Ninject.Web.Mvc。

如果我正在创建MVC3应用程序,是否需要使用Ninject的此扩展?我对Noject for IoC的类/接口的基本使用是否需要标准库以外的内容?

MVC3项目中的Ninject和Ninject.MVC3 / Ninject.Web.Mvc有什么区别?

mip*_*e34 5

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“替代”其使用DefaultControllerFactory只能创建具有无参数构造函数的控制器)。

在文档中,提到了两种方法,:扩展NinjectHttpApliactionin global.asax或使用文件夹NinjectWebCommon内的类App_Start

也有ninject.web.common扩展名,这是必需的ninject.web.mvc。它包含例如的定义InRequestScope