3

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

4

1 回答 1

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只能创建具有无参数构造函数的控制器)。

在文档中提到了两种方法,如何做到这一点:扩展NinjectHttpApliactioninglobal.asax或使用文件夹NinjectWebCommon内的类。App_Start

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

于 2013-03-31T19:12:33.597 回答