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

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

DDD
发布: 2024-12-25 20:02:15
原创
777 人浏览过

How Can I Properly Raise Inherited Events in C#?

在 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 -= 
登录后复制

出现此错误的原因事件不能像普通继承成员那样访问。要从继承类引发事件,应使用以下方法:

  1. 在基类中,创建可用于引发事件的受保护方法。这些方法应使用前缀“On”后跟事件名称来命名:
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);
    }
}
登录后复制
  1. 在从此基类继承的类中,可以调用 OnLoading 和 OnFinished 方法来引发事件:
public class InheritedClass : BaseClass
{
    public void DoSomeStuff()
    {
        ...
        OnLoading(EventArgs.Empty);
        ...
        OnFinished(EventArgs.Empty);
    }
}
登录后复制

通过使用受保护的方法在基类中引发事件,您可以确保事件处理程序从派生类正确调用,同时保持事件引发机制的封装。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板