zoukankan      html  css  js  c++  java
  • C# 事件的继承

    有下面一段代码,目的是实现事件的继承:
    基类:

        public class BaseBusiness
        {
            //声明事件委托
            public delegate void ProgressEventHandler(int progress, string msg);
            
    //声明事件
            public event ProgressEventHandler ProgressEvent;
        }

    派生类:
        public class MyBusiness : BaseBusiness
        {
            public MyBusiness()
            {
                
    this.ProgressEvent(30,"Testing...");
            }
        }

    编译时提示如下错误:   
    事件“BaseBusiness.ProgressEvent”只能出现在 += 或 -= 的左边(从类型“BaseBusiness”中使用时除外) 

    出现编译错误的原因是:
    事件只能从声明它们的类中调用,派生类不能直接调用在基类声明的事件。

    要处理基类的事件,通常通过在基类中为事件创建受保护虚方法(OnEventName)来实现。派生类可以重写基类的OnEventName方法,也可以直接调用基类的OnEventName方法,从而实现调用基类的事件。重写基类的OnEventName方法,派生类可以截获基类正在调用的事件,对这些事件执行它自己的处理。

    修改后的代码如下:
    基类:

        public class BaseBusiness
        {
            //声明事件委托
            public delegate void ProgressEventHandler(int progress, string msg);
            
    //声明事件
            public event ProgressEventHandler ProgressEvent;

            protected virtual void OnProgress(int progress, string msg)
            {
                
    if (this.ProgressEvent != null)
                    
    this.ProgressEvent(progress, msg);
            }

        }

    派生类:
        public class MyBusiness : BaseBusiness
        {
            public MyBusiness()
            {
                //  可以直接调用基类的方法
                this.OnProgress(this.OnProgressValue, "Testing...");            
            }

            //  可以重写基类的方法
            protected override void OnProgress(int progress, string msg)
            {
                
    // 在这里添加其他处理代码
                base.OnProgress(progress, msg);
            }

        }

    本文地址:http://www.cnblogs.com/anjou/archive/2007/06/19/788987.html
  • 相关阅读:
    如何在Ubuntu 20.04 LTS Focal Fossa上安装Jekyll
    如何在CentOS 8 / RHEL 8服务器上安装qBittorrent
    如何在Kubernetes中向节点添加或删除标签
    java--io
    hdfs文件上传下载--client模式--Kerberos认证
    java--正则表达式使用
    Javaweb访问Hdfs--Kerberos认证
    Kerberos常用命令
    druid配置详解
    dubbo详细介绍
  • 原文地址:https://www.cnblogs.com/anjou/p/788987.html
Copyright © 2011-2022 走看看