0

リスナーがIoCコンテナーによって作成されるときに、リスナーのシングルトンイベントアグリゲーターへの自動登録を実装しようとしています。基本的にはJeremy D. Millerが行っていますが、StructureMapの代わりにCastleを使用しています。

したがって、Windsorのオブジェクト作成メカニズムを「インターセプト」できるようにし、オブジェクトがマーカーインターフェイス(たとえば)をサポートしている場合は、メソッドを(コンテナにも登録されているIListener)に呼び出して、新しく作成されたオブジェクトをサブスクライバーにします。イベントに。また、オブジェクトインスタンスがコンテナによって解放される前に、サブスクライブを解除できるようにしたいと思います。SubscribeEventAggregator

このようなことを達成するためにウィンザー城のどのメカニズムを使用すべきかについて少し混乱していますか?私はインターフェースを見始めましたが、オブジェクトへのすべての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 に答える