C# プロジェクトを深く掘り下げるたびに、本当に 1 つの項目を渡す必要があるだけのイベントが大量に発生します。EventHandler
私は/の練習に固執しEventArgs
ますが、私がやりたいのは次のようなものです:
public delegate void EventHandler<T>(object src, EventArgs<T> args);
public class EventArgs<T>: EventArgs {
private T item;
public EventArgs(T item) {
this.item = item;
}
public T Item {
get { return item; }
}
}
後で、私は私のものを持つことができます
public event EventHandler<Foo> FooChanged;
public event EventHandler<Bar> BarChanged;
EventArgs
ただし、.NET の標準では、イベントの種類ごとに新しいデリゲートとサブクラスを作成するようです。私の一般的なアプローチに何か問題がありますか?
編集: この投稿の理由は、これを新しいプロジェクトで再作成したばかりで、問題がないことを確認したかったからです。実は、投稿したとおりに作り直していました。ジェネリックがあることがわかった
EventHandler<TEventArgs>
ので、ジェネリックデリゲートを作成する必要はありませんが、ジェネリックEventArgs<T>
クラスはまだ必要TEventArgs: EventArgs
です.
別の編集:組み込みソリューションの(私にとって)1つの欠点は、余分な冗長性です:
public event EventHandler<EventArgs<Foo>> FooChanged;
対。
public event EventHandler<Foo> FooChanged;
ただし、システム名前空間はデフォルトでインポートされるため、クライアントがイベントに登録するのは面倒な場合があります。そのため、Resharper のような派手なツールを使用しても、手動で名前空間を探す必要があります...誰にでもそれに関連するアイデアがあります?