首页 >后端开发 >C++ >如何在 C# 中正确引发继承事件?

如何在 C# 中正确引发继承事件?

Patricia Arquette
Patricia Arquette原创
2024-12-26 12:07:10927浏览

How to Properly Raise Inherited Events in C#?

如何在 C# 中引发继承事件

在 C# 中,事件可以在基类中声明并由派生类访问。但是,在继承的类中引发事件需要特定的处理。

问题:

当尝试引发从基类继承的事件时,您可能会遇到错误,指出该事件只能出现在 = 或 -= 的左侧

解决方案:

要引发继承的事件,您必须在基类中创建可用于调用事件的受保护方法。这些方法应遵循命名约定“OnEventName”。

例如,考虑以下基类:

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);
    }
}

在派生类中引发事件:

在派生类中,调用受保护的方法来引发events:

public class DerivedClass : BaseClass
{
    public void DoSomething()
    {
        ...
        OnLoading(EventArgs.Empty);
        ...
        OnFinished(EventArgs.Empty);
    }
}

注意:

  • 可以修改受保护的方法来检查是否需要调用事件处理程序(例如,通过检查 handler .GetIncationList().Length > 0).
  • 此方法确保可以在在整个继承层次结构中保持一致的方式。

以上是如何在 C# 中正确引发继承事件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn