アプリケーションの起動アクティビティ用のインターフェイスを実装するクラスのグループがあります。登録コードは次のとおりです。
private static void ConfigureContainer()
{
var container = new WindsorContainer();
container.Register(AllTypes.Of<IStartupTask>()
.FromAssembly(Assembly.GetExecutingAssembly()))
...
var serviceLocator = container.Resolve<IServiceLocator>();
ServiceLocator.SetLocatorProvider(() => serviceLocator);
}
タスクを取得するために、これを使用すると、期待どおりに動作します。
public static void Run()
{
var tasks = ServiceLocator.Current.GetAllInstances<IStartupTask>();
foreach (var task in tasks)
{
task.Execute();
}
}
これが私の問題です。最初に実行される別のタスクに依存する 1 つのタスクがあります。InitializeDatabase
タスクの前に実行する必要があるタスクがありPopulateDatabse
ます。実行される他のタスクもたくさんありますInitializeDatabase
が、タイプの解決を注文できるキャッスル構成がある場合は、タスクを分割したくありません。解決されるタイプの完全な順序を指定したくありません。これは、自動登録の目的に反するためです。それがInitializeDatabase
最初かPopulateDatabase
最後かだけです。
すべての型の順序を指定せずに、どの型を最初に解決する必要があるかを登録する方法はありますか?