C# 事件的继承
来源:互联网 发布:把mac照片导入iphone 编辑:程序博客网 时间:2024/06/14 19:51
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); } }
- C# 事件的继承
- C# 事件的继承
- C# 事件的继承
- C# 事件的继承
- C# 事件的继承
- C#中事件的继承
- c#事件的继承处理
- C#中事件的继承
- C#继承窗口的事件处理
- C# 事件与继承
- 处理继承的事件
- 学点C# 4 继承 & 事件
- C#的继承机制
- C#类的继承
- 圈点C#的继承
- C# 的继承体系
- C#成员的继承
- C#类的继承
- 域名注册秘密
- sencha touch 功能简介
- 打造自己的vim界面--用winmanager合并显示NERDTree和TagList
- 网站布局不能自动auto,也就是margin:0px auto不起作用
- MYSQL备份恢复
- C# 事件的继承
- oracle的decode()+nvl()的使用
- 怎样花两月时间去应聘互联网公司
- Quartz 2D编程指南(1) - 概览
- C和C++中include的用法
- 十个让Windows 7系统更好用的方法
- C语言 N阶汉诺塔问题的递归实现
- Hibernate介绍与配置文件、jar包的说明(二)
- ABAP数据库操作系列(2)