Mik*_*lum 12 .net c# events eventargs
我有一个当前定义没有事件参数的事件.也就是说,它发送的EventArgs是EventArgs.Empty.
在这种情况下,最简单的方法是将我的事件处理程序声明为:
EventHandler<System.EventArgs> MyCustomEvent;
Run Code Online (Sandbox Code Playgroud)
我不打算在此事件中添加任何事件参数,但是将来可能需要更改任何代码.
因此,我倾向于让我的所有事件始终创建一个空事件args类型System.EventArgs,即使当前不需要事件args也是如此.像这样的东西:
public class MyCustomEventArgs : EventArgs
{
}
Run Code Online (Sandbox Code Playgroud)
然后我的事件定义变为以下内容:
EventHandler<MyCustomEventArgs> MyCustomEvent;
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:定义自己的更好MyCustomEventArgs,即使它没有添加任何东西,除了继承System.EventArgs,以便将来可以更容易地添加事件参数?或者将事件明确定义为返回更好System.EventArgs,以便用户更清楚没有额外的事件参数?
我倾向于为我的所有事件创建自定义事件参数,即使事件参数为空.但我想知道是否有人认为让事件参数为空的用户更清楚会更好吗?
非常感谢提前,
麦克风
adr*_*nks 14
来自Brad Abrams和Krzysztof Cwalina的框架设计指南:
考虑使用子类
EventArgs作为事件参数,除非您完全确定事件永远不需要携带任何数据到事件处理方法,在这种情况下您可以EventArgs直接使用该类型.如果您
EventArgs直接使用API ,您将永远无法在不破坏兼容性的情况下添加任何要携带的数据.如果使用子类,即使最初完全为空,也可以在需要时向子类添加属性.
就个人而言,我认为这归结为兼容性问题.如果你要让一个类库供别人使用,那么我会使用一个子类.如果您只在自己的代码中使用事件,那么(正如Alfred所说),YAGNI适用.当你从EventArgs你自己的派生类改变时,这将是一个重大改变,但由于它只会破坏你自己的代码,所以这不是一个太大的问题.
| 归档时间: |
|
| 查看次数: |
2811 次 |
| 最近记录: |