2012-10-25 61 views
0

我现在的情况是这样的:我如何拥有一个“通用”代表?

我有一个单独的文件这两个代表:

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)上的部分有关。因为handlerOtherEventOtherEventHandler,所以基类不能接受它;基类只接受EventHandler

我的目的是有一个“通用”的代表,这样当OtherEvent继承Event方法,OtherEvent仍然使用它自己类型的委托不同的参数从其父为handler类领域的灵活性。

我该怎么做才能达到我的目的?

+0

'OtherEventArgs'是否继承自'EventArgs'? – Rawling

+0

@Rawling,是的,'OtherEventArgs'继承自'EventArgs'。 – Carven

+0

你想做什么?也许还有其他的方法来存档你想要的。 –

回答

1

默认代表使用情况有什么问题EventHandler<TEventArgs>?它可以用任何类型参数化,从EventArgs继承。

另外我也不太明白Event这个课的用途。你可以简单地这样定义事件:

public event EventHandler<OtherEventArgs> OtherEvent; 
0

也许使用泛型而不是继承?

class Event<TEvent> 
{ 
    TEvent _handler; 
    public Event(TEvent handler) 
    { 
     _handler = handler; 
    } 
} 
相关问题