Получить значение propertyinfo
Im пытается получить значение от PropertyInfo[]
, но я не могу заставить его работать:
foreach (var propertyInfo in foo.GetType().GetProperties())
{
var value = propertyInfo.GetValue(this, null);
}
Исключение: Object does not match target type.
Разве это не должно быть сделано?
Ответы
Ответ 1
Вы пытаетесь получить свойства от this
, когда вы изначально выбрали PropertyInfo
из foo.GetType()
. Поэтому это было бы более уместно:
var value = propertyInfo.GetValue(foo, null);
Предположим, что вы хотите эффективно получить foo.SomeProperty
и т.д.
Ответ 2
Вы получаете это исключение, потому что this
не тот же тип, что и foo
.
Вы должны убедиться, что получаете свойства для того же объекта, с которого собираетесь попытаться получить значение. Я угадываю из вашего кода, что вы ожидаете, что это будет foo внутри области цикла (что совсем не так), поэтому вам нужно изменить строку нарушения:
var value = propertyInfo.GetValue(foo, null);
Ответ 3
Вы обрабатываете свойства, объявленные в типе foo
, но пытаетесь прочитать их значения из this
, которые, по-видимому, не одного типа.