Несколько лет назад я прочитал книгу, в которой описывалось, как можно переопределить реализацию диспетчера событий по умолчанию в .NET с помощью собственного процессора.
class foo {
public event EventHandler myEvent;
...
}
...
myFoo.myEvent += myBar1.EventHandler;
myFoo.myEvent += myBar2.EventHandler;
При возникновении события будут вызываться обработчики myBar1 и myBar2.
Насколько я помню, реализация этого цикла по умолчанию использует связанный список и просто перебирает список и вызывает делегаты EventHandler по порядку.
У меня двоякий вопрос:
Обновлено: книга, о которой я говорил, действительно была CLR Джеффри Рихтера через C#





Кажется, я помню нечто подобное в CLR Джеффри Рихтера через C#. Редактировать: Я точно помню, что он подробно рассказывал об этом.
Есть несколько разных причин для контроля над регистрацией событий. Один из них - уменьшить раздувание кода, когда у вас ТОННА событий. Я думаю, что Джеффри подробно рассказал об этом в книге ...
Это могла быть одна из многих книг или статей в Интернете.
Есть несколько причин, по которым вы можете захотеть изменить способ подписки / отписки на события:
Я уверен, что их больше - это не в моей голове :)
Обновлено: Также обратите внимание, что существует разница между настраиваемым способом обработки подписки / отмены подписки и настраиваемым способом создания события (которое может вызывать GetInvocationList и гарантировать, что все обработчики вызываются, например, независимо от исключений).