我最近尝试实现自己的简单事件聚合器。我从 MSDN 上的事件聚合器文章中获得了很多灵感。关于 MSDN 上的事件聚合器,我注意到一件事是事件实际上是它们自己的类。这根本不是一件坏事。但是,我只是觉得总是为每个小事件创建一个新的空类很尴尬。
我觉得这很尴尬的原因是因为需要为每个细粒度事件创建一个类。例如,鼠标单击事件将具有 double_click、single_click、left_click、right_click 等。所有这些都会有自己的类。一段时间后它会变得混乱。
所以在我自己的实现中,我认为我可以以这样的方式实现,其中ClickEvent
是一个类,但与 Click 事件相关的所有粒度事件都将是ClickEvent
. 在这种情况下,“类型”是enum
. 用法如下所示:
//Publisher
eventAggregator.GetEvent<ClickEvent>.Publish(ClickEventType.Double_Click, eventArgs);
//Subscriber
eventAggregator.GetEvent<ClickEvent>.Subscribe(ClickEventType.Double_Click, handlerMethod);
但是,我不确定这个实现是否违背了拥有强类型事件的全部目的?现在,它似乎ClickEvent
只是不同事件枚举类型的容器。