私は同じ質問に対する答えを探していましたが、自分でまともな答えを見つけたようです。そしてところで:私はMVC、Ninject、DI n00bなので、ここから離れている場合は遠慮なく私を撃ってください。しかし、私はそれをかなり理解していると思います。
「PreApplicationStartMethod」属性はすでにSystem.Webに存在し、Application_Start()の前でもメソッドを実行するために使用できます。つまり、すでにApplication_Start()でインジェクションを開始する必要がある可能性があるため、DIスタッフにとって非常に優れています。また、PreApplicationStartMethodを使用することで、インジェクションスタッフをApplication_Start()から除外し、それが最初に開始することを確認できます。アプリケーションが起動します。
問題は、Microsoftがこの属性でマークできるメソッドを1つだけ許可していることです。これは、設計上の欠陥であると彼らが認めていることです。そのため、この欠点を回避するためにWebActivatorクラスを作成しました。
複数のメソッドをPreApplicationStartMethodとしてマークできることの利点の1つは、初期化が必要なNuGetパッケージを、既存のコードに触れることなく、WebActivatorバージョンのPreApplicationStartMethod属性である種の初期化メソッドをマークするだけでアプリケーションに挿入できることです。
このメソッドは、Application_Start()でカーネルを構築するのとほとんど同じですが、Ninjectのものが先に開始されます。
NinjectHttpApplicationをオーバーライドすることで、HttpContextのバインドなど、多くの一般的なMVC関連のバインドジョブをNinjectに実行させることができます。WebActivavtor/ Application_Start()メソッドを使用すると、私が知る限り、これを自分で実行する必要があります。
いくつかの良いリンク: