自定义事件提供的事件参数的首选做法是什么?
时间:2020-03-06 14:26:03 来源:igfitidea点击:
关于.NET中的自定义事件,传递事件参数的首选设计模式是什么?对于应该引发的每个事件,我们是否应该有一个单独的EventArgs派生类,或者如果所有事件都由同一类的事件引发,则可以为该事件使用一个类?
解决方案
这取决于事件是什么,但是在大多数情况下,为了使任何人都可以使用事件,请创建一个从EventArgs派生的自定义类。
我通常创建一个基本的EventArgs类,该类具有每个事件的通用数据。如果某个特定事件具有更多与之关联的数据,那么我将为该事件创建一个子类。否则,我只使用基类。
我将像OAB一样,创建一个自定义的"基本" args类,该类通过添加特定于我在其中使用组件或者应用程序的数据来扩展EventArgs。在会计出口应用程序中,我的基本ExportEventArgs将添加一个AccountNo属性。
我们无需为每个事件都拥有单独的EventArgs派生类。使用现有的EventArgs派生的类而不是重新发明轮子是完全可以接受的,甚至是理想的。
这些可能是现有的框架类(例如System.Component.CancelEventArgs,如果我们要做的只是让事件处理程序可以取消某项操作)。
或者,如果我们有特定于应用程序的数据可以传递给事件处理程序,则可以创建自己的EventArgs派生类。如果来自同一类或者不同类的两个事件发送相同的数据,则没有理由不应该使用相同的EventArgs派生类。