Я начал с вопроса и, набрав вопрос, нашел ответ, но вместо удаления подумал, что это может быть полезно для А) получения подтверждения и Б) для помощи другим.
Если у меня есть событие, и в нескольких местах приложения добавлены прослушиватели, каков наилучший способ удалить всех прослушивателей одновременно? Например, я могу ...
myPage.OnPageOpened += OpenPage;
и позже в моем коде ...
myPage.OnPageOpened -= OpenPage;
Но что, если у меня есть неизвестные сторонние подписчики, и я хочу нажать волшебную кнопку сброса, которая очищает все и запускается с нуля?
Вы можете использовать операторы + = и - = где угодно против EventHandler, потому что перегрузки операторов являются публичными. Оператор = перегружен как частный, его можно вызывать только в определяющем классе.
Так что в определяющем классе я могу использовать это для очистки моего EventHandler.
OnPageOpened = null;
И чтобы раскрыть эту функциональность, я мог бы ...
public void ClearPageOpenedEvents() {
OnPageOpened = null;
}
Это правильно?