Если соответствующий объект указал ключевое слово события, то единственное, что вы можете сделать, это добавить (+=
) и удалить (-=
) обработчики, ничего более.
Я считаю, что сравнение длины списка вызовов будет работать, но вам нужно внутри получить объект, чтобы добраться до него.
Также имейте в виду, что операторы +=
и -=
возвращают новый объект события; они не модифицируют существующий.
Почему вы хотите знать, подключено ли определенное событие? Чтобы избежать многократной регистрации?
Если это так, то хитрость заключается в том, чтобы сначала удалить обработчик (-=
), так как удаление обработчика, которого там нет, является законным и ничего не делает. Например:
// Ensure we don't end up being triggered multiple times by the event
myObject.KeyEvent -= KeyEventHandler;
myObject.KeyEvent += KeyEventHandler;