【发布时间】:2016-04-28 09:47:55
【问题描述】:
目前我正在努力,是否覆盖现有方法,例如OnActivate,而不是在同一类中订阅event。
例如我有以下类,它实现了一个事件:
public class Base
{
public delegate void DoSomeThing(object sender, EventArgs e);
public event DoSomeThing DoSomeThingEventHandler;
public virtual void OnDoSomeThing(EventArgs e)
{
if (DoSomeThingEventHandler != null)
{
DoSomeThingEventHandler(this, e);
}
}
}
我有一个派生自Base 的类,如果DoSomeThing 被调用,它希望得到通知。我应该覆盖DoSomeThing 还是应该订阅该事件:
解决方案一:
public class B1 : Base
{
public override void OnDoSomeThing(EventArgs e)
{
// Do some stuff here
base.OnDoSomeThing(e);
}
}
第二个解决方案
public class B2 : Base
{
public B2()
{
DoSomeThingEventHandler += B2_DoSomeThingEventHandler;
}
private void B2_DoSomeThingEventHandler(object sender, EventArgs e)
{
// Do some thing here
}
}
您更喜欢B1 还是B2 解决方案?
谢谢大家!
【问题讨论】:
-
你必须覆盖事件
标签: c# .net oop events overriding