Отписаться. NET событие от подписчика - PullRequest
4 голосов
/ 04 августа 2011

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

в следующем примере кода, могу ли я удалить подписку из ссылающегося класса B или его метода X??

Class1 A = new Class1();
Class2 B = new Class2();

A.DoneIt += B.X;

означает выполнение A.DoneIt -= B.X; без какого-либо доступа к классу A (или путем отражения в классе A).

1 Ответ

6 голосов
/ 04 августа 2011

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

Делегаты указывают один путь, т. Е. На метод.У метода нет указателя на событие.Таким образом, единственный доступ к событию для отмены подписки - через экземпляр типа, для которого оно определено.

Дополнительная информация: События и делегаты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...