Вы также можете заглянуть в InvocationList, чтобы узнать, было ли что-либо прикреплено к событию.
Отредактировано для использования действия, поэтому вам не нужно передавать какую-то магическую строку.
Пример:
public bool IsAttached(Action<string> methodToCheck)
{
SomeWork completed = DoWork;
return completed.GetInvocationList().Any(m => m.Method.Name == methodToCheck.Method.Name);
}
Использование:
var b = new FooBar();
b.DoWork += b_OnWorkCompleted;
b.DoWork += c_OnWorkCompleted;
Console.WriteLine(b.IsAttached(c_OnWorkCompleted));
Console.WriteLine(b.IsAttached(b_OnWorkCompleted));
Console.WriteLine(b.IsAttached(FooBar));
Вывод будет true, true, false