在 C# 中引发继承事件
在 C# 中使用继承时,了解如何正确访问和引发已声明的事件非常重要在基类中。
假设您有一个包含以下事件的基类定义:
public event EventHandler Loading; public event EventHandler Finished;
在继承自该基类的类中,尝试直接引发这些事件时可能会遇到错误,例如:
this.Loading(this, new EventHandler()); // Error: The event 'BaseClass.Loading' can only appear on the left hand side of += or -=
出现此错误的原因事件不能像普通继承成员那样访问。要从继承类引发事件,应使用以下方法:
protected virtual void OnLoading(EventArgs e) { EventHandler handler = Loading; if(handler != null) { handler(this, e); } } protected virtual void OnFinished(EventArgs e) { EventHandler handler = Finished; if(handler != null) { handler(this, e); } }
public class InheritedClass : BaseClass { public void DoSomeStuff() { ... OnLoading(EventArgs.Empty); ... OnFinished(EventArgs.Empty); } }
通过使用受保护的方法在基类中引发事件,您可以确保事件处理程序从派生类正确调用,同时保持事件引发机制的封装。
以上是如何在 C# 中正确引发继承事件?的详细内容。更多信息请关注PHP中文网其他相关文章!