黑马程序员技术交流社区
标题:
实现事件的继承报错求解!
[打印本页]
作者:
mustek
时间:
2013-4-15 20:28
标题:
实现事件的继承报错求解!
基类:
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“中使用时除外)。
作者:
HM朱百青
时间:
2013-4-15 22:38
首先 你这个问题出现在事件只能在它声明的类中调用,要想在派生类中调用基类的事件,要在基类中为事件创建方法!
public class BaseBusiness
{
// 声明事件委托
public delegate void ProgressEventHandler(int progress,string msg);
//声明事件
public event ProgressEventHandler ProgressEvent;
//为事件声明方法
public void OnProgressEvent(int p, string m)
{
}
}
//派生类:
public class MyBusiness :BaseBusiness
{
public MyBusiness()
{
this.OnProgressEvent(30, "Testing....");
}
}
复制代码
当然你的派生类想要有自己的事件 你可以将父类的事件方法声明为virtual的,访问修饰符最好是遗传保护的,用protected,然后在派生类中重写就可以了!
对了 我这段代码还没有写全,一般在调用事件的时候,你需要判断一下,事件是否注册了!就是在事件的方法里面判断一下
protected virtual void OnProgressEvent(int p, string m)
{
if (ProgressEvent != null) //判断事件是否已经注册了
{
}
}
作者:
许庭洲
时间:
2013-4-15 22:46
1. 若要向委托的方法列表(调用列表)中添加额外的方法,只需使用加法运算符或加法赋值运算符(“+”或“+=”)添加两个委托;
2. 若要从调用列表中移除方法,请使用减法运算符或减法赋值运算符(“-”或“-=”).
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2