Я не думаю, что это возможно без создания собственной структуры событий или, возможно, использования отражения, чтобы получить доступ к частным элементам, реализованным в компиляторе.
Я просто скомпилировал небольшой фрагмент и пропустил его через Reflector.
Оригинальный код
RemoveHandler d.CollectionChanged, AddressOf DestinationsChanged
AddHandler d.CollectionChanged, AddressOf DestinationsChanged
Что закончилось в отражателе
Me.$STATIC$get_Destinations$200126C$d.remove_CollectionChanged(New NotifyCollectionChangedEventHandler(Me, DirectCast(Me.DestinationsChanged, IntPtr)))
Me.$STATIC$get_Destinations$200126C$d.add_CollectionChanged(New NotifyCollectionChangedEventHandler(Me, DirectCast(Me.DestinationsChanged, IntPtr)))
Обратите внимание, что .net, похоже, использует некоторые сгенерированные компилятором наблюдаемые коллекции для отслеживания событий.
Вы + могли бы + иметь возможность использовать отражение, чтобы добраться до класса и извлечь эти внутренне определенные коллекции, а затем перечислить их содержимое, но я никогда не пробовал.
Другой вариант может заключаться в том, чтобы свернутьсобственная структура обработки событий для рассматриваемого события.
Подробнее об этом читайте в этой статье.
http://www.codeproject.com/KB/cs/EventChain.aspx
Чтобы продолжить исследование, я настоятельно рекомендую захватитькопия рефлектора.