現在、次のコードを使用して、クラスにイベントを実装します。このイベントには、最大 1 つのイベント ハンドラーを登録できます。
private event EventHandler<EventArgs> e_Foo;
public event EventHandler<EventArgs> Foo {
add {
if (e_Foo != null && e_Foo.GetInvocationList().Any())
throw new InvalidOperationException("Only one event handler may be registered at a time.");
e_Foo += value;
}
remove {
e_Foo -= value;
}
}
private void OnFoo() {
if (e_Foo != null)
e_Foo(this, EventArgs.Empty);
}
- より良い方法はありますか?
- これをクラスにまとめて、多くのコードをコピーして貼り付ける必要がないようにする方法はありますか?