我正在寫一個定製的Timer,它擴展了DispatcherTimer。它有一個名爲TimerSetUp的方法,我將Tick事件關聯到一個EventHandler。在C中傳遞一個事件處理函數作爲參數#
public class MyTimer : DispatcherTimer
{
public MyTimer(){}
public void TimerSetUp(EventHandler<EventArgs> _EventHandler)
{
base.Tick += _EventHandler;
}
}
我現在有另一對夫婦類,StopwatchTimer和CountdownTimer,擴展MyTimer。讓我們看看CountdownTimer。
public class CountdownTimer : MyTimer
{
public CountdownTimer()
{
base.TimerSetUp(CountdownTimer_Tick);
}
public void CountdownTimer_Tick(object sender, EventArgs e)
{
//...do something
}
}
當其中一方的聲明,構造函數必須調用基類的方法 TimerSetUp和剛剛成立的事件處理程序。
的問題是,在TimerSetUp功能的簽名,它給了我這個錯誤
Cannot implicitly convert type 'System.EventHandler<System.EventArgs>'
to'System.EventHandler<object>
我不能擺脫它。如果我只是把TimerSetUp內CountdownTimer,只是直接分配的事件處理程序,這樣
base.Tick += CountdownTimer_Tick;
它的工作原理,但我真的想使它工作的其他方式。 所以我想知道如果
1)有一個辦法可以解決這個
2)這是一個很好的方法來代碼的可擴展性?
事件處理程序沒有EventArgs的 – Steve
@Steve它給出了同樣的錯誤 –
奇怪,我用你的代碼,只是刪除了''(不需要使用標準EventHandler委託)的''是,如果你提供所需的自己的EventArgs派生實例。 https://msdn.microsoft.com/en-us/library/db0etb8x(v=vs.110).aspx –
Steve