1

关于 .NET 中的自定义事件,传递事件参数的首选设计模式是什么?对于每个可以引发的事件,您是否应该有一个单独的EventArgs派生类,或者如果它们都是由同一类的事件引发的,那么为这些事件设置一个类是可以接受的?

4

4 回答 4

1

我通常创建一个基础 EventArgs 类,该类具有每个事件的公共数据。如果某个特定事件有更多相关数据,我会为该事件创建一个子类;否则我只使用基类。

于 2008-09-19T14:06:24.477 回答
1

您不需要为每个事件都有一个单独的 EventArgs 派生类。使用现有的 EventArgs 派生类而不是重新发明轮子是完全可以接受的,甚至是可取的。

这些可能是现有的框架类(例如 System.Component.CancelEventArgs,如果您只想为事件处理程序提供取消操作的可能性。

或者,如果您有特定于应用程序的数据要传递给事件处理程序,则可以创建自己的 EventArgs 派生类。如果来自同一类或不同类的两个事件发送相同的数据,则没有理由不使用相同的 EventArgs 派生类。

于 2008-09-19T17:40:42.387 回答
0

这取决于事件是什么,但在大多数情况下,为了谁将使用您的事件,请创建一个从 EventArgs 派生的自定义类。

于 2008-09-19T14:05:16.523 回答
0

我想像 OAB 一样,创建一个自定义的“基本”args 类,通过添加特定于我使用它的组件或应用程序的数据来扩展 EventArgs。例如,在会计导出应用程序中,我的基本 ExportEventArgs 将添加一个 AccountNo 属性。

于 2008-09-19T14:20:28.000 回答