我现在的情况是这样的:
我将这两个代表放在一个单独的文件中:
public delegate void EventHandler(Object obj, EventArgs e);
public delegate void OtherEventHandler(Object obj, OtherEventArgs e);
我有一个Event看起来像这样的类:
class Event {
EventHandler _handler;
public Event(EventHandler handler) {
_handler = handler;
}
}
我有另一个以Event这种方式继承的类:
class OtherEvent : Event {
OtherEventHandler _handler;
public OtherEvent (OtherEventHandler handler) : base(handler) {
_handler = handler;
}
}
这就是问题发生的地方。错误在于base(handler). 因为handlerinOtherEvent是一个OtherEventHandler,基类不能接受它;基类只接受EventHandler.
我的意图是拥有一个“通用”委托,这样当OtherEvent从 继承方法时Event,OtherEvent仍然可以灵活地使用其自己的委托类型,并使用与其父handler类字段不同的参数。
我能做些什么来实现我的意图?