我有一组为我的应用程序启动活动实现接口的类。这是注册码:
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();
}
}
这是我的问题:我有一个任务取决于另一个任务首先运行。有一个InitializeDatabase
任务需要在PopulateDatabse
任务之前运行。还有一堆其他任务正在运行InitializeDatabase
,如果有一些 Castle 配置允许我订购类型的分辨率,我宁愿不将任务拆分出来。我不想指定正在解析的类型的完整顺序,因为这违背了自动注册的目的,只是InitializeDatabase
第一个或PopulateDatabase
最后一个。
有没有办法注册哪些类型应该首先解析而不指定所有类型的顺序?