在Event Aggregator模式中,发布者将事件发布到聚合器,订阅者通过聚合器订阅特定事件。
假设有3个订阅者SubscriberA
,SubscriberB
和SubscriberC
。他们都想订阅一个名为OnPowerUpEvent
的活动。 OnPowerUpEvent
可以PowerItemA
或PowerItemB
触发PowerItemA
。还可以有{em>多个实例 PowerItemB
和OnPowerUpEvent
。
基于这种情况,我不明白Event Aggregator模式如何能够允许订阅者订阅特定发布者发布的事件。在我看来,订阅者一般只能订阅活动SubscriberA
,无论发布者是谁,都可以回复此事件。
例如,OnPowerUpEvent
可能希望订阅由任何 PowerItemA
个实例发布的事件SubscriberB
。 OnPowerUpEvent
可能希望订阅由PowerItemB
的特定实例发布的事件SubscriberC
。并且OnPowerUpEvent
可能希望订阅一般事件{{1}},无论发布者是谁。
在这3种不同的情况下,Event Aggregator模式如何管理它?
答案 0 :(得分:1)
流行事件聚合器实现不仅提供简单的发布/订阅功能,还提供更多comples订阅过滤基础结构,例如Prism EventAggregator允许提供谓词和处理程序:(see MSDN)
FundAddedEvent fundAddedEvent = eventAggregator.GetEvent<FundAddedEvent>();
fundAddedEvent.Subscribe(FundAddedEventHandler,
ThreadOption.UIThread, false,
fundOrder => fundOrder.CustomerId == _customerId);