我目前的情况如下:
我将这两个代表放在一个单独的文件中:
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)
上的部分有关。由于handler
中的OtherEvent
是OtherEventHandler
,因此基类无法接受它;基类只接受EventHandler
。
我的目的是拥有一个“通用”委托,以便当OtherEvent
继承Event
中的方法时,OtherEvent
仍然可以灵活地使用自己的委托类型和不同的参数来自handler
类字段的父级。
我能做些什么来实现我的目的?
答案 0 :(得分:1)
使用默认代理EventHandler<TEventArgs>
有什么问题?它可以使用任何类型进行参数化,继承自EventArgs
。
此外,我并不真正了解Event
课程的目的。您可以通过以下方式定义事件:
public event EventHandler<OtherEventArgs> OtherEvent;
答案 1 :(得分:0)
也许使用泛型而不是继承?
class Event<TEvent>
{
TEvent _handler;
public Event(TEvent handler)
{
_handler = handler;
}
}