Мне нужно знать, какие обработчики связаны с событием CollectionChanged класса ObservableCollection. Единственным решением, которое я нашел, было бы использование Delegate.GetInvocationList() для делегата события. Проблема в том, что я не могу заставить Reflection найти компилятор, сгенерированный делегатом. AFAIK делегат имеет то же название, что и событие. Я использовал следующий кусок кода:Получить компилятор сгенерированный делегат для события
PropertyInfo notifyCollectionChangedDelegate = collection.GetType().GetProperty("CollectionChanged", BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy);
Моя цель - управлять подпиской на событие NotifyCollectionChanged, но мне нужно подписаться только один раз. Я не хочу управлять логическим полем для каждого ObservableCollection для хранения этой информации. (Подписка происходит в местах, которые вызывается несколько раз.) Итак, проще всего проверить, подписан ли я уже с обработчиком. Либо мне не хватает чего-то очень простого здесь, либо событие .net framework действительно нужно будет выставить свойство, которое возвращает подписанных обработчиков. (Кстати, ранее я нашел статью, описывающую систему делегатов WinForms, но мне это было нужно.) –