温莎容器何时触发IKernel.瞬态组件的ComponentDestroyed事件
本文关键字:组件 ComponentDestroyed 事件 IKernel 何时触 | 更新日期: 2023-09-27 17:53:05
容器未触发事件。,则以下测试总是失败:
public void ComponentDestroyedEvent()
{
var wasDestroyed = false;
var container = new WindsorContainer()
.Register(
Component.For(typeof (Cat))
.LifeStyle.Transient
.OnCreate((k, instance) => {
k.ComponentDestroyed += (model, component) => {
if (component == instance)
wasDestroyed = true;
};
}));
var cat = container.Resolve<Cat>();
container.Release(cat);
Assert.True(wasDestroyed);
}
ComponentDestroyed事件何时触发?
Mauricio是对的——这个组件没有触发事件,因为该组件没有被跟踪,而且Windsor无论如何也不会与它有任何关系。
如果组件被跟踪,则在运行完所有退役步骤后,将作为管道的最后一步引发事件。
Windsor 3,当它发布时,有一个OnDestroy
方法,它接受一个lambda并添加一个退役步骤,从而强制跟踪组件,这意味着您放入那里的代码将在发布时被调用。