是的,您可以擁有任意數量的類,只要您有一個WebActivator.PreApplicationStartMethod
程序集屬性指向它們即可。許多NuGet包使用這種技術,使他們能夠引導到您的應用程序,而無需編輯Global.asax。
您也可以定義訂單。您可以在PreApplicationStartMethod
調用中傳遞一個命名參數Order
。 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)
。
雖然我不特別想進入服務定位器模式的優點和缺點!
你是說即使我有一個PreAppStat方法,它可以多次調用?爲什麼這樣? – 2012-01-28 00:19:49
框架只會調用一次該方法。但是,假設你有3個組件:A,B和C.A和B都依賴於C(因此按照這個準則,它們都在它們自己的方法中調用C的PreAppStart方法)。但是A和B是獨立的,彼此不瞭解,所以不能協調C的PreAppStart方法被調用的次數。這就是爲什麼C的方法需要是冪等的。 – marcind 2012-01-29 01:23:14
哦,我明白了。謝謝。 – 2012-01-29 20:15:11