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
  • 相关阅读:
    VMware 克隆一个虚拟机(win7)
    HDU 5695 Gym Class (拓扑排序、贪心、优先队列)
    HDU2647 Reward (拓扑排序、反向建图)
    HDU 3342 Legal or Not (拓扑排序、有向图是否存在环)
    Vue框架简介及简单使用
    Linux文件常用指令
    Linux系统相关命令
    Linux关机指令详解
    linux目录结构
    Linux用户相关命令
  • 原文地址:https://www.cnblogs.com/anjou/p/788987.html
Copyright © 2011-2022 走看看