0

イベントアグリゲーターパターンでは、パブリッシャーはイベントをアグリゲーターに公開し、サブスクライバーはアグリゲーターを介して特定のイベントをサブスクライブします。

3つのサブスクライバー、、、およびがSubscriberAあるとします。彼らは皆、と呼ばれるイベントを購読したいと思っています。は、またはのいずれかで起動できます。およびの複数のインスタンスが存在する場合もあります。SubscriberBSubscriberCOnPowerUpEventOnPowerUpEventPowerItemAPowerItemBPowerItemAPowerItemB

このシナリオに基づいて、イベントアグリゲーターパターンによって、サブスクライバーが特定のパブリッシャーによって発行されたイベントをサブスクライブできるようにする方法がわかりません。購読者は一般的にイベントにしか購読できずOnPowerUpEvent、発行者が誰であってもイベントに応答できるように思えます。

たとえば、任意のインスタンスによって公開されSubscriberAたイベントをサブスクライブしたい場合があります。の特定のインスタンスによって公開されたイベントをサブスクライブすることができます。また、発行者が誰であるかに関係なく、一般的にイベントを購読することをお勧めします。OnPowerUpEvent PowerItemASubscriberBOnPowerUpEventPowerItemBSubscriberCOnPowerUpEvent

これらの3つの異なるケースでは、イベントアグリゲーターパターンはこれをどのように管理しますか?

4

1 に答える 1

1

人気のあるEventAggregatorの実装は、単純なパブリッシュ/サブスクライブ機能だけでなく、より完全なサブスクリプションフィルタリングインフラストラクチャを提供します。たとえば、Prism EventAggregatorを使用すると、ハンドラーとともに述語を提供できます。(MSDNを参照

FundAddedEvent fundAddedEvent = eventAggregator.GetEvent<FundAddedEvent>();

fundAddedEvent.Subscribe(FundAddedEventHandler, 
                         ThreadOption.UIThread, false,
                         fundOrder => fundOrder.CustomerId == _customerId);
于 2012-10-20T19:47:29.833 に答える