111,129
社区成员
发帖
与我相关
我的任务
分享
class Publisher
{
public event EventHandler<CustomEventArgs> RaiseCustomEvent;
public void DoSomething()
{
OnRaiseCustomEvent(new CustomEventArgs("Did something"));
//本来把事件放在 OnRaiseCustomEvent()方法里面,已经够麻烦了,为什么还要放在这里面调用??
}
// Wrap event invocations inside a protected virtual method
// to allow derived classes to override the event invocation behavior
protected virtual void OnRaiseCustomEvent(CustomEventArgs e)
{
EventHandler<CustomEventArgs> handler = RaiseCustomEvent;
if (handler != null)
{
e.Message += String.Format(" at {0}", DateTime.Now.ToString());
handler(this, e);
}
}
}
class Publisher2: Publisher
{
override void OnRaiseCustomEvent(CustomEventArgs e)
{
if(!现在是睡眠时间())
{
替换Message中的流氓字眼(e);
base.OnRaiseCustomEvent (e);
}
}
}
这可以做一些“事件机制做不了的”事情。