温莎有自己的IStartable
界面。如果您希望 Windsor 注册您的对象并在此之后立即创建/运行它们,您将使用Startable Facility。
为了澄清,这里有两个概念:
IStartable
接口,它提供Start
和Stop
方法。这是一个提供生命周期回调的生命周期接口:Start
在组件实例创建后立即调用(在构造函数运行后)
Startable Facility,它强制您的IStartable
组件在安装程序运行后立即实例化并启动。
下面是代码的样子:
container.AddFacility<StartableFacility>(f => f.DeferredStart());
container.Install(FromAssembly.This());
// by here all startable are started
如果您使用的是 Windsor 3.3 或更高版本,您还可以手动触发可启动项启动(如果您需要为它们做一些额外的设置,这很有用)
var flag = new StartFlag();
container.AddFacility<StartableFacility>(f => f.DeferredStart(flag));
container.Install(FromAssembly.This());
// do whatever else set up your app needs
// when ready, signal the flag
flag.Signal();
// by here all startable are started