0

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

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

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

4

2 回答 2

1

IKernel公开各种事件ComponentCreated,您ComponentDestroyed可以使用这些事件来构建它。网上有很多样例

否则,您可以只使用事件连接工具,但它不是基于约定的。

于 2009-08-28T13:09:57.480 回答
0

您也可以像这样使用 OnCreate:

container.Register(
        Component.For(typeof (Foo)).OnCreate(
          (k, c) => {
            // ...
            eventAggregator.Subscribe(c);
            // ...
          }));
于 2011-04-14T08:32:38.150 回答