Подтвердить что ты не робот

Как получить значение свойства с помощью отражения

У меня есть следующий код:

FieldInfo[] fieldInfos;
fieldInfos = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);

То, что я пытаюсь сделать, это получить значение одного из моих свойств текущего экземпляра экземпляра во время выполнения, используя отражение. Как я могу это сделать?

4b9b3361

Ответ 1

Что-то вроде этого должно работать:

var value = (string)GetType().GetProperty("SomeProperty").GetValue(this, null);

Ответ 2

Попробуйте метод GetProperties, он должен получить вам свойство вместо полей.

Чтобы получить значение, сделайте следующее:

object foo = ...;
object propertyValue = foo.GetType().GetProperty("PropertyName").GetValue(foo, null);

Это использует GetProperty, который возвращает только один объект PropertyInfo, а не массив из них. Затем мы вызываем GetValue, который принимает параметр объекта для извлечения значения из (PropertyInfo специфичен для типа, а не для экземпляра). Второй параметр GetValue - это массив индексов, для свойств индекса, и я предполагаю, что свойство, которое вас интересует, не является индексированным свойством. (Индексированное свойство - это то, что позволяет сделать list[14] для получения 14-го элемента списка.)