Ответ 1
Нет. Вы не можете.
Ключевое слово события было явно придумано, чтобы вы не делали то, что хотите. Это делает объект делегата недоступным для события, поэтому никто не может взаимодействовать с обработчиками событий.
В связи с этим вопросом, Проверить, существует ли событие
но разница в том, что я просто хочу знать, привязан ли конкретный метод к событию. Таким образом, могут быть применены другие методы, но я просто хочу знать, существует ли какой-то конкретный.
Моя среда - С# в dotnet 4.0.
например.
Event += MyMethod1;
Event += MyMethod2;
// Some code
if (MyMethod1IsAttachedToEvent())
{
// Achieved goal
}
Возможно ли это?
Ключевое слово события было явно придумано, чтобы вы не делали то, что хотите. Это делает объект делегата недоступным для события, поэтому никто не может взаимодействовать с обработчиками событий.
Event.GetInvocationList().Any(x => x.Method.Name.Equals("yourmethodname"));
foreach ( Delegate existingHandler in this.EventHandler.GetInvocationList() )
{
if ( existingHandler == prospectiveHandler )
{
return true;
}
}
проведите через делегаты, используя метод GetInvocationList
.