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

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

我了解 Ninject 的一些功能并且能够将其用于 IoC。

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

如果我正在创建 MVC3 应用程序,我需要使用 Ninject 的这个扩展吗?我对带有类/接口(interface)的 IoC 的 Ninject 的基本使用是否需要标准库之外的任何东西?

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

最佳答案

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

来自documentation :

This extension allows integration between the Ninject core and ASP.NET MVC projects. To use it, just make your HttpApplication (typically in Global.asax.cs) extend NinjectHttpApplication:

MVC 3 扩展包含将 DI 组合根连接到 MVC 应用程序的关键方法 - 这意味着 Ninject 将负责实例化您的 Controller ,它依赖于其他组件(Ninjects“覆盖” 的使用DefaultControllerFactory 只能使用无参数构造函数创建 Controller )。

文档中提到了两种方法,how to do it : 扩展 global.asax 中的 NinjectHttpApliaction 或使用 App_Start 文件夹中的 NinjectWebCommon 类。

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

关于c# - MVC3 项目中标准 ninject 和 ninject.web.mvc 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15733159/

相关文章:

asp.net-mvc-3 - 有没有办法减少 TinyMCE 文件和文件夹的数量?

c# - 使用 Ninject 绑定(bind)到类型为 List<T> 的已定义对象

c# - 具有精度和比例的 nhibernate 映射十进制

c# - 将 ASMX 转换为 WCF Web 服务需要付出多少努力?

c# - 将 IList<T> 附加到 ObservableCollection<T>

asp.net-mvc - 在多层应用程序中使用 IoC 时避免程序集引用

javascript - 更新 Div 添加文本、评论功能

c# - 无法使用依赖注入(inject)访问我的存储库(变量仍然为空)

asp.net - 在 WebForms 中使用 Ninject 注入(inject) Web 用户控件

c# - WinRT : Loading static data with GetFileFromApplicationUriAsync()