【问题标题】:What are the advantages of using class typed events over enum events?与枚举事件相比,使用类类型事件有什么优势?
【发布时间】:2026-01-12 20:55:01
【问题描述】:

与枚举事件相比,使用类类型事件有什么优势?

最初,我认为使用 Prism 中的类类型事件更好,因为可以在编译时检查事件。但经过一番思考,这似乎只适用于字符串引用的事件。枚举事件似乎也很好。它仍然可以在编译时检查,也可以很容易地重构。

通过类类型事件,我的意思是这样的:

eventAggregator.GetEvent<MouseEvent>.Publish(eventArgs);

而枚举事件可能看起来像这样(类似于 Flex 中事件的工作方式):

eventAggregator.Publish(MouseEvent.Double_Click, eventArgs);

那么,与枚举事件相比,使用类类型事件有哪些优点和缺点?枚举事件的缺点是什么?

【问题讨论】:

    标签: c# events implementation


    【解决方案1】:

    枚举事件唯一可能有一些小好处的时候是多个事件应该触发同一段代码。然而,与每个事件应该触发不同代码的更常见的缺点相比,这个小好处是相当微不足道的。假设您正在创建某种库,如果您可以想象开发人员在他们的应用程序中创建多个事件同义词,那么这是一个很好的迹象,表明您的事件没有非常明确地定义并且可能会经受重新设计。

    【讨论】: