当IoC容器创建侦听器时,我正在尝试实现将侦听器自动注册到单个事件聚合器 - 基本上是Jeremy D. Miller正在做的事情,但使用Castle而不是StructureMap
所以我希望能够“拦截”Windsor的对象创建机制,如果对象支持标记界面(比方说IListener
),请将Subscribe
方法调用EventAggregator
(也在容器中注册)使新创建的对象成为事件的订阅者。此外,在容器释放对象实例之前,我希望能够取消订阅它。
我对温莎城堡应该用什么机制来实现这样的事情有点困惑?我开始查看IInterceptor
接口,但它似乎拦截了对该对象的所有调用,这不是我真正需要的(并且出于性能原因希望避免)。
答案 0 :(得分:1)
IKernel
exposes various events,例如ComponentCreated
和ComponentDestroyed
,您可以使用它来构建它。网上有many samples。
否则你可以使用event wiring facility,但它不是基于约定的。
答案 1 :(得分:0)
你也可以像这样使用OnCreate:
container.Register(
Component.For(typeof (Foo)).OnCreate(
(k, c) => {
// ...
eventAggregator.Subscribe(c);
// ...
}));