2012-10-25 60 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; 
    } 
} 
相關問題