Ответ 1
Что-то вроде этого должно работать:
var value = (string)GetType().GetProperty("SomeProperty").GetValue(this, null);
У меня есть следующий код:
FieldInfo[] fieldInfos;
fieldInfos = GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
То, что я пытаюсь сделать, это получить значение одного из моих свойств текущего экземпляра экземпляра во время выполнения, используя отражение. Как я могу это сделать?
Что-то вроде этого должно работать:
var value = (string)GetType().GetProperty("SomeProperty").GetValue(this, null);
Попробуйте метод GetProperties, он должен получить вам свойство вместо полей.
Чтобы получить значение, сделайте следующее:
object foo = ...;
object propertyValue = foo.GetType().GetProperty("PropertyName").GetValue(foo, null);
Это использует GetProperty, который возвращает только один объект PropertyInfo, а не массив из них. Затем мы вызываем GetValue, который принимает параметр объекта для извлечения значения из (PropertyInfo специфичен для типа, а не для экземпляра). Второй параметр GetValue - это массив индексов, для свойств индекса, и я предполагаю, что свойство, которое вас интересует, не является индексированным свойством. (Индексированное свойство - это то, что позволяет сделать list[14]
для получения 14-го элемента списка.)