温莎城堡:连接容器的解决和释放机制

时间:2009-08-28 12:06:59

标签: castle-windsor listener eventaggregator

当IoC容器创建侦听器时,我正在尝试实现将侦听器自动注册到单个事件聚合器 - 基本上是Jeremy D. Miller正在做的事情,但使用Castle而不是StructureMap

所以我希望能够“拦截”Windsor的对象创建机制,如果对象支持标记界面(比方说IListener),请将Subscribe方法调用EventAggregator (也在容器中注册)使新创建的对象成为事件的订阅者。此外,在容器释放对象实例之前,我希望能够取消订阅它。

我对温莎城堡应该用什么机制来实现这样的事情有点困惑?我开始查看IInterceptor接口,但它似乎拦截了对该对象的所有调用,这不是我真正需要的(并且出于性能原因希望避免)。

2 个答案:

答案 0 :(得分:1)

IKernel exposes various events,例如ComponentCreatedComponentDestroyed,您可以使用它来构建它。网上有many samples

否则你可以使用event wiring facility,但它不是基于约定的。

答案 1 :(得分:0)

你也可以像这样使用OnCreate:

container.Register(
        Component.For(typeof (Foo)).OnCreate(
          (k, c) => {
            // ...
            eventAggregator.Subscribe(c);
            // ...
          }));