• 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
  • 相关阅读:
    PHP.29-TP框架商城应用实例-后台6-商品会员添加-价格、级别
    PHP.TP框架下商品项目的优化4-优化商品添加表单js
    TP-常见错误1
    python+pyqt5实现24点小游戏
    OpenCV+Python识别车牌和字符分割的实现
    python爬取酷狗音乐排行榜
    python-itchat 统计微信群、好友数量的实例
    Python爬虫beautifulsoup4常用的解析方法总结
    Python视频人脸检测识别
    Python openpyxl : Excel 文档简单操作
  • 原文地址:https://www.cnblogs.com/anjou/p/788987.html
Copyright © 2020-2023  润新知