私はカスタマイズされたTimerを書き留めており、DispatcherTimerを継承しています。 TimerSetUpというメソッドがあり、TickイベントをEventHandlerに関連付けます。C#で引数としてイベントハンドラを渡す
public class MyTimer : DispatcherTimer
{
public MyTimer(){}
public void TimerSetUp(EventHandler<EventArgs> _EventHandler)
{
base.Tick += _EventHandler;
}
}
私は今MyTimerを拡張するクラスの別のカップル、StopwatchTimerとCountdownTimerを、持っています。 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>
を与え、私はそれを取り除くことができない、ということです。私はちょうどCountdownTimer内TimerSetUpを入れて、ちょうど直接イベントハンドラを割り当てた場合、この
base.Tick += CountdownTimer_Tick;
ようにそれは動作しますが、私は実際にそれが他の方法で作業したいのですが。 だから私は
1)これは、コードの拡張性に優れたアプローチです)私はこの
2を解決することができます方法はありかどうかを知りたいのですが?
のEventArgs – Steve
なしのEventHandlerそれは、私はあなたのコードを使用し、ちょうどあなたがあなたを供給する場合は、 ''が必要とされる ''(標準のEventHandlerデリゲートでは必要ありません)を取り外し、 –
奇妙な同じエラーを与える@Steve自身のEventArgs派生インスタンスhttps://msdn.microsoft.com/en-us/library/db0etb8x(v=vs.110).aspx – Steve