nugetテンプレートを使用してMVC3アプリを挿入します。つまり、WebActivatorを使用して静的クラスのメソッドを呼び出し、静的クラスでNinjectブートストラッパーを作成してMVC3に接続します。
これは、コントローラー、アダプターなどで正常に機能します。ただし、Ninjectを使用して依存関係を取得する別のWebactivatorアクティブ化クラスが必要です。
私はそれを貧弱な人の解決策で動作させるようになりましたが、私はよりエレガントな解決策を好みます。
まず、WebactivatorクラスがPostApplicationStartMethod呼び出しを使用していることを確認します。これは、NinjectモジュールがPreApplicationStartMethodを使用しているため、ninjectがロードされ、準備ができていることを確認できます。
var workers = DependencyResolver.Current.GetServices<IWorker>();
依存関係を取得するには、クラス全体が次のようになります
[assembly: WebActivator.PostApplicationStartMethod(typeof(SHB.DALA.Web.App_Start.WorkflowRunner), "Start")]
namespace SHB.DALA.Web.App_Start
{
public static class WorkflowRunner
{
public static void Start()
{
var workers = DependencyResolver.Current.GetServices<IWorker>();
//Do stuff with worker collection
}
}
}
もっとエレガントな解決策があるはずですよね?