Asp.net mvc 3 什么';为MVC3应用程序配置Ninject的正确方法是什么?
我读过几篇关于为MVC3项目设置Ninject的文章 有些人说您的Global.asax.cs应该继承自NinjectHttpApplication,其他人则在通过应用程序_Start()构建标准内核时注册模块 我个人使用了NuGet,它以不同的方式创建了一个AppStart\u NinjectMVC3类,并使用Asp.net mvc 3 什么';为MVC3应用程序配置Ninject的正确方法是什么?,asp.net-mvc-3,ninject,webactivator,Asp.net Mvc 3,Ninject,Webactivator,我读过几篇关于为MVC3项目设置Ninject的文章 有些人说您的Global.asax.cs应该继承自NinjectHttpApplication,其他人则在通过应用程序_Start()构建标准内核时注册模块 我个人使用了NuGet,它以不同的方式创建了一个AppStart\u NinjectMVC3类,并使用 [assembly: WebActivator.PreApplicationStartMethod(typeof(MyApp.AppStart_NinjectMVC3), "Start
[assembly: WebActivator.PreApplicationStartMethod(typeof(MyApp.AppStart_NinjectMVC3), "Start")]
每个问题都有什么优点/缺点吗?我一直在寻找同一个问题的答案,但似乎自己也找到了一个像样的答案。顺便说一句:我是MVC,Ninject,DI n00b,所以如果我离这里很远的话,请随时向我开枪,但我想我已经基本明白了 System.Web中已存在“PreApplicationStartMethod”属性,甚至可以在应用程序启动()之前使用该属性运行方法。这意味着它对DI内容非常有用,因为您可能已经需要在应用程序_start()中开始注入,并且通过使用preapplicationstart方法,您可以将注入内容保留在应用程序_start()之外,并确保在应用程序启动时首先开始注入 问题是微软只允许一个方法被标记这个属性,他们承认这是一个设计缺陷。这就是为什么他们创建了WebActivator类来规避这个短消息 允许将多个方法标记为PreApplicationStartMethod的好处之一是,只需使用PreApplicationStartMethod属性的WebActivator版本标记某种初始化方法,就可以将需要初始化的NuGet包插入到应用程序中,而无需接触现有代码 此方法与仅在应用程序_Start()中构建内核几乎相同,但Ninject的内容在前面已经介绍过了 通过重写NinjectHttpApplication,您可以让Ninject为您执行许多与MVC相关的绑定工作,如绑定HttpContext等。据我所知,使用WebActivavtor/Application_Start()方法,您必须自己完成这项工作 一些好的链接:
Ninject.Web.Mvc
和Ninject.MVC3
已经合并。仍然有两种方法可以从NinjectHttpApplication
派生或安装nuget软件包。但现在它们基于相同的代码,因此具有相同的特性。有关更多详细信息,请参阅我的博客帖子: