是的,您可以拥有任意数量的类,这些类具有WebActivator.PreApplicationStartMethod
指向它们的程序集属性。许多 NuGet 包使用此技术使它们能够引导到您的应用程序,而无需编辑 Global.asax。
您也可以定义顺序。Order
您可以在PreApplicationStartMethod
调用中传递命名参数。WebActivator 框架将确保按指定的顺序调用方法。例如,要先注册您的 IoC 框架,请执行以下操作:
[assembly: WebActivator.PreApplicationStartMethod(typeof(MyApp.App_Start.NinjectWebCommon), "Start", Order=1]
[assembly: WebActivator.PreApplicationStartMethod(typeof(MyApp.App_Start.BGScheduler), "Start", Order=2]
因为WebActivator
类是静态类,我看不出如何在其中使用构造函数注入。但是,您可以通过将 IoC 解析器注册为 Mvc 的默认服务定位器来使用服务定位器(反?)模式,使用System.Web.Mvc.DependencyResolver.SetResolver(IDependencyResolver resolver)
.
不过,我并不想在这里讨论服务定位器模式的优缺点!