Jay*_*Jay 5 .net c# events inheritance
在设计派生类时,如果不需要更改方法,那么在ctorvs中覆盖OnEventName()方法并添加一些行为(以及调用基本方法)的基类事件中添加处理程序是否有优势?基本方法并不关心事情发生的顺序,但只想要一个具有一点额外行为的可重用组件?
public abstract class BaseClass
{
public event EventHandler SomeEvent;
protected void OnSomeEvent(object sender, EventArgs e)
{
// do some stuff
}
}
Run Code Online (Sandbox Code Playgroud)
public class DerivedA
{
protected override void OnSomeEvent(object sender, EventArgs e)
{
// do some other stuff
base.OnSomeEvent(sender, e);
}
}
Run Code Online (Sandbox Code Playgroud)
public class DerivedB
{
public DerivedB()
{
SomeEvent += (o,e) => { // do some other stuff };
}
}
Run Code Online (Sandbox Code Playgroud)
您已经提到了事物的调用顺序。其他一些事情确实不会经常发生,但可能很重要(基于基类控制如何调用事件处理程序的事实):
一般来说,我倾向于将事件视为专门为类的用户而存在,设计良好的类具有On...子类的虚拟方法。
| 归档时间: |
|
| 查看次数: |
3765 次 |
| 最近记录: |