.NETイベントモデルの理解にかなり満足しています。システムの小さなニュアンスを誤解しているのではないかと思います。
クラスにイベントを入れ始めたとき、次のような標準的な方法を使用します。
public event EventHandler<MyEventArgs> MyEvent;
これは、イベントにサブスクライブするものには、次のようなメソッドが必要であることを意味しました。
void HandleThatEvent(object sender, MyEventArgs args){...}
これは素晴らしいことですが、送信者を気にすることはめったにないため、多くのメソッドシグネチャが肥大化しました。
だから私は自分のデリゲート型の宣言に切り替えました
public delegate void MyEventHandler(SomeClass argument);
これにより混乱が減りましたが、ハンドラーの作成に関して小さな問題が残りました。
eventImplmentor.MyEvent += HandleThatEvent;
.
.
.
void HandleThatEvent(/*oh, um, what arguments does it take? Intellisense isn't telling me*/)
だから私はデリゲートの宣言に戻って見て、そして戻ってそれらを書くか、それをコンパイルして言われるのを待たなければなりません。
だから今、代わりに、私はちょうどAction
、Action<T>
または適合するテンプレートを使用しています。
public event Action<SomeClass> MyEvent;
イベントにカーソルを合わせて、どのパラメーターが期待されるかを知ることができます。
私の質問、結局のところ:C#でイベントを宣言するためのベストプラクティスはありますか?EventHandler<T>
道に戻る必要がありAction<T>
ますか、それとも容認できますか?