Вы принципиально не можете сделать это: событие - это черный ящик с функциями «подписаться» и «отписаться».Таким образом, хотя вы можете использовать рефлексию, чтобы узнать все события, вы не можете надежно определить, на какие подписки были подписаны.Для событий, подобных полям, вы можете получить поле поддержки и проверить, является ли оно пустым, но даже если оно ненадежно - чтобы избежать проверок на пустое значение, автор мог написать что-то вроде этого:
public event EventHandler SomeEvent = delegate {};
Для другихсобытия, вам нужно будет решить, что на самом деле делает подписка на событие - например, оно может использовать EventHandlerList
.
По сути, вы должны переосмыслить свой дизайн, чтобы вы неэто нужно сделать.