【发布时间】:2013-06-03 16:47:27
【问题描述】:
我有一个父抽象类和几个子类。最后,我希望通过 GUI 中的进度条显示子类中完成的进度。
我现在所做的,我意识到这不会起作用,是在父类中声明为每个子类将覆盖的虚拟方法的事件方法定义。所以像:
public abstract class Parent
{
public event EventHandler someEvent;
protected virtual void OnSomeEvent(object sender, EventArgs e)
{
EventHandler eh= someEvent;
if (eh!= null)
{
eh(this, e);
}
}
}
我的孩子班有类似的东西:
protected override void OnSomeEvent(object sender, EventArgs e)
{
base.OnSomeEvent(sender, e);
}
并且事件在子类的某个地方引发。
但是,由于父类是抽象的,我将无法从我的 GUI 监听事件,因为我无法创建抽象类的实例。
我是否完全偏离了方向和/或是否有其他方法可以做到这一点?
【问题讨论】:
-
为什么您的 UI 不能附加到子实例上的事件?如果你继承自
Parent,Child也会有这个事件。 -
这个想法是我不一定希望 GUI 知道哪个孩子引发了事件。 @SpikeX
-
所以你想要一个在 Parent 上的静态事件处理程序,它只有一个实例,这就是你的意思。
-
我想要每个孩子都有一个进度条,所以你的解决方案是正确的@SpikeX
标签: c# events inheritance