目前我struggeling,是否在同一类覆盖现有的方法,例如OnActivate
而不是subsripte一个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
?
谢谢大家!
你必须重写事件 –