Подтвердить что ты не робот

Проверьте, не подключен ли уже определенный метод обработчика событий

В связи с этим вопросом, Проверить, существует ли событие

но разница в том, что я просто хочу знать, привязан ли конкретный метод к событию. Таким образом, могут быть применены другие методы, но я просто хочу знать, существует ли какой-то конкретный.

Моя среда - С# в dotnet 4.0.

например.

Event += MyMethod1;
Event += MyMethod2;

// Some code
if (MyMethod1IsAttachedToEvent())
{
    // Achieved goal
}

Возможно ли это?

4b9b3361

Ответ 1

Нет. Вы не можете.

Ключевое слово события было явно придумано, чтобы вы не делали то, что хотите. Это делает объект делегата недоступным для события, поэтому никто не может взаимодействовать с обработчиками событий.

Источник: Как дерманить, если событие уже подписано

Ответ 2

Event.GetInvocationList().Any(x => x.Method.Name.Equals("yourmethodname"));

Ответ 3

foreach ( Delegate existingHandler in this.EventHandler.GetInvocationList() )
{
    if ( existingHandler == prospectiveHandler )
    {
          return true;
    }
}

проведите через делегаты, используя метод GetInvocationList.