Приведение отраженного свойства к ObservableCollection - PullRequest
0 голосов
/ 31 октября 2018

У меня есть программа на C #, в которой я получаю значения свойств в классе с помощью отражения. Некоторые из этих свойств являются ObservableCollections. Я использую их специально, потому что хочу получить доступ к событию CollectionChanged.

Вот как я получаю собственность:

var o = propertyInfo.GetValue(this, null);

Теперь я знаю (из других условий в коде), что это ObservableCollection. Но я не могу просто использовать «o.CollectionChanged», потому что компилятор так не видит.

То, что я решил сделать, это бросить 'o' в коллекцию ObservableCollection. Возможно, что-то вроде этого:

(o as ObservableCollection<>).CollectionChanged...

Но, к сожалению, это не сработает. Я получаю ошибку в угловых скобках, которая говорит: «Ожидаемый тип».

Могу ли я получить тип в о? Конечно, я могу использовать GetGenericArguments, который возвращает тип элементов в ObservableCollection. Но проблема в том, что я не могу поставить этот тип между угловыми скобками при приведении - он просто не допустит этого.

Как я могу это сделать?

Я знаю, что есть еще один подобный вопрос, но он не касается моего вопроса, и решения, насколько я вижу, не отвечают на мой вопрос. Я также думаю, что было бы трудно спросить больше об этом, так как этот вопрос старше пяти лет. Кроме того, этот парень хочет получить коллекцию на основе объекта, который у него есть, и решения отражают это. Его «рабочее решение» в нижней части его вопроса, которое работает для него, вообще не решает мою проблему. Вы можете подумать, что они похожи, если не будете внимательно читать, но это не так.

...