Да, у вас может быть столько классов, сколько вам нужно, с атрибутом сборки 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)
.
Я не особо хочу идтив преимущества и недостатки шаблона поиска сервисов здесь!