C# 事件的继承
来源:互联网 发布:淘宝网店开 编辑:程序博客网 时间:2024/06/07 16:22
有下面一段代码,目的是实现事件的继承:
基类:
public class BaseBusiness
{
//声明事件委托
public delegate void ProgressEventHandler(int progress, string msg);
//声明事件
public event ProgressEventHandler ProgressEvent;
}
{
//声明事件委托
public delegate void ProgressEventHandler(int progress, string msg);
//声明事件
public event ProgressEventHandler ProgressEvent;
}
派生类:
public class MyBusiness : BaseBusiness
{
public MyBusiness()
{
this.ProgressEvent(30,"Testing...");
}
}
{
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 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);
}
}
{
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#类的继承
- IE和FireFox中层的拖动详解
- C#制作屏幕捕捉程序
- 转一篇好文章:数据库开发者常犯的十大错误
- ISP简介(ISP--Interface Segregation Principle)
- 在项目开发总的一些感受,希望大家共同来探讨项目管理中的一些看法
- C# 事件的继承
- Struts中logic部分标签实例
- 数据结构与算法(C#实现)系列---二叉树
- uname gethostbyname 结合获取本机地址
- GNU通用公共许可证(中--英对照)
- smartUpload文件上传组件
- 关于CSDN的网摘
- “Hello World!”的N种写法
- 一年过去了,本周日将去实习了