Получить значение propertyinfo - программирование
Подтвердить что ты не робот

Получить значение propertyinfo

Im пытается получить значение от PropertyInfo[], но я не могу заставить его работать:

foreach (var propertyInfo in foo.GetType().GetProperties())
{
      var value = propertyInfo.GetValue(this, null);
}

Исключение: Object does not match target type.

Разве это не должно быть сделано?

4b9b3361

Ответ 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, которые, по-видимому, не одного типа.