Отражение: приведите PropertyInfo к списку <obj> - PullRequest
1 голос
/ 14 июня 2011

Как следует из названия, я пытаюсь привести PropertyInfo к его «оригинальному» типу, который в моем случае равен List<obj>.

Я попробовал код ниже без удачи:

(List<obj>)pInfo.GetValue(pInfo, null)

(List<obj>)pInfo.GetValue(typeof<obj>, null)

Это просто бросает мне исключение:

TargetException не обработано: объект не соответствует типу цели.

Я уверен, что пропускаю что-то чрезвычайно простое, но не могу понять, что.

Ответы [ 3 ]

9 голосов
/ 14 июня 2011

Первый параметр - целевой объект:

var list = (List<object>)prop.GetValue(obj,null);

Лично у меня может возникнуть соблазн использовать здесь неуниверсальный API; дженерики и рефлексы редко смешиваются:

var list = (IList)prop.GetValue(obj,null);
3 голосов
/ 14 июня 2011

Это:

(List<obj>)pInfo.GetValue(pInfo, null)

неверно, первый аргумент GetValue должен быть объектом, для которого вы читаете свойство, а не самим PropertyInfo.

0 голосов
/ 14 июня 2011

Вам нужно передать объект, для которого вы хотите получить значение, а не тип.Как то так.

List<obj> object ...

(List<obj>) pInfo.GetValue( object, null );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...