0
考虑以下情况,可能是这样的情况是非常假想为什么虚拟事件不会不调用重写处理
public delegate void MyDel();
public class T1
{
public T1()
{
}
public virtual event MyDel MyEvent;
public virtual void RaiseEvent()
{
MyEvent();
}
protected virtual void HandleEvent()
{
MessageBox.Show("base event");
}
}
public class T2:T1
{
public override event MyDel MyEvent;
public T2()
{
MyEvent += new MyDel(HandleEvent);
}
protected override void HandleEvent()
{
MessageBox.Show("overridden event");
}
}
和主要的客户端代码
baseT = new T2();
baseT.MyEvent += new MyDel(() => MessageBox.Show("From client"));
baseT.RaiseEvent();
为什么它抛出一个异常,为什么虚拟事件的行为不像虚拟/重写的方法?
您是否读过异常信息?它说什么? – Botz3000 2013-03-13 07:20:58
@ Botz3000::),我知道你指向'对象引用',但是如果你无法获得虚拟覆盖行为,为什么虚拟覆盖可能在事件的第一位 – TalentTuner 2013-03-13 07:23:51