C# 事件的继承
来源:互联网 发布:淘宝卖家术语 编辑:程序博客网 时间:2024/05/17 20:29
有下面一段代码,目的是实现事件的继承:
基类:
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);
}
}
http://www.cnblogs.com/anjou/archive/2007/06/19/788987.html
- C# 事件的继承
- C# 事件的继承
- C# 事件的继承
- C# 事件的继承
- C# 事件的继承
- C#中事件的继承
- c#事件的继承处理
- C#中事件的继承
- C#继承窗口的事件处理
- C# 事件与继承
- 处理继承的事件
- 学点C# 4 继承 & 事件
- C#的继承机制
- C#类的继承
- 圈点C#的继承
- C# 的继承体系
- C#成员的继承
- C#类的继承
- Panel中换行
- 学习计划 (一)
- Reflector DLL查看
- SQL Server 2005 Express附加(Attach)的数据库为“只读”的解决方法
- python的__del__看来还是少用的好
- C# 事件的继承
- VS2005运行时读写配置文件(.config)
- 赴微软测试工程师必考一道笔试题目
- 测试新手入门-----项目经理眼中的黑盒白盒测试
- 起伏
- 在线翻译
- 请大虾们给予帮助
- 英语中的强调句简介
- C#中的方法参数