この質問に関連して、 イベントが既に存在するかどうかを確認
しかし、違いは、特定のメソッドがイベントに関連付けられているかどうかを知りたいだけです。 otherメソッドがアタッチされている可能性がありますが、特定のメソッドが存在するかどうかを知りたいだけです。
私の環境はdotnet 4.0のC#です。
例えば。
Event += MyMethod1;
Event += MyMethod2;
// Some code
if (MyMethod1IsAttachedToEvent())
{
// Achieved goal
}
これは可能ですか?
eventキーワードは、目的の操作を実行できないようにするために明示的に発明されました。これにより、イベントのデリゲートオブジェクトにアクセスできなくなり、誰もイベントハンドラーを操作できなくなります。
foreach ( Delegate existingHandler in this.EventHandler.GetInvocationList() )
{
if ( existingHandler == prospectiveHandler )
{
return true;
}
}
GetInvocationList
メソッドを使用してデリゲートをループします。
Event.GetInvocationList().Any(x => x.Method.Name.Equals("yourmethodname"));