はい、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)
ます。
ただし、ここではサービスロケーターパターンの長所と短所については特に説明しません。