在 C# 中引发从基类继承的事件
在 C# 中,从基类继承事件以促进事件是常见的做法在派生类中处理。但是,引发此类继承事件需要采用特定方法来避免编译器错误。
考虑基类定义以下事件的场景:
public class BaseClass { public event EventHandler Loading; public event EventHandler Finished; }
在派生类中,尝试引发Loading 事件使用:
this.Loading(this, new EventHandler());
导致错误:
The event 'BaseClass.Loading' can only appear on the left hand side of += or -= (BaseClass')
This发生错误是因为事件与其他类成员不同,不能由派生类直接调用。相反,继承的事件必须通过调用基类中定义的特定方法来引发。为此,需要执行以下步骤:
public class BaseClass { public event EventHandler Loading; public event EventHandler Finished; 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 DerivedClass : BaseClass { public void DoSomething() { // Raise Loading event OnLoading(EventArgs.Empty); // Raise Finished event OnFinished(EventArgs.Empty); } }
通过遵循这种方法,可以在 C# 的派生类中安全有效地引发继承事件。
以上是如何在 C# 派生类中正确引发继承事件?的详细内容。更多信息请关注PHP中文网其他相关文章!