У меня есть программа на C #, в которой я получаю значения свойств в классе с помощью отражения. Некоторые из этих свойств являются ObservableCollections. Я использую их специально, потому что хочу получить доступ к событию CollectionChanged.
Вот как я получаю собственность:
var o = propertyInfo.GetValue(this, null);
Теперь я знаю (из других условий в коде), что это ObservableCollection. Но я не могу просто использовать «o.CollectionChanged», потому что компилятор так не видит.
То, что я решил сделать, это бросить 'o' в коллекцию ObservableCollection. Возможно, что-то вроде этого:
(o as ObservableCollection<>).CollectionChanged...
Но, к сожалению, это не сработает. Я получаю ошибку в угловых скобках, которая говорит: «Ожидаемый тип».
Могу ли я получить тип в о? Конечно, я могу использовать GetGenericArguments, который возвращает тип элементов в ObservableCollection. Но проблема в том, что я не могу поставить этот тип между угловыми скобками при приведении - он просто не допустит этого.
Как я могу это сделать?
Я знаю, что есть еще один подобный вопрос, но он не касается моего вопроса, и решения, насколько я вижу, не отвечают на мой вопрос. Я также думаю, что было бы трудно спросить больше об этом, так как этот вопрос старше пяти лет. Кроме того, этот парень хочет получить коллекцию на основе объекта, который у него есть, и решения отражают это. Его «рабочее решение» в нижней части его вопроса, которое работает для него, вообще не решает мою проблему. Вы можете подумать, что они похожи, если не будете внимательно читать, но это не так.