Вам нужно как-то найти поле поддержки, которое было автоматически сгенерировано компилятором с помощью Reflection. И тогда, используя FieldInfo
, вы сможете прочитать его значение. И я не уверен, возможно ли это вообще.
ОК, у меня есть решение:
со следующим классом,
public class TestClass
{
public String TestProperty { private get; set; }
}
и следующий метод расширения,
public static class ObjectExtensions
{
public static Object GetPropertyValue(this Object obj, String propertyName)
{
if (obj == null) throw new ArgumentNullException("obj", "`obj` cannot be null");
var fields = from f in obj.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic)
where f.Name.Contains(String.Format("<{0}>", propertyName))
select f;
if (fields.Any())
{
return fields.First().GetValue(obj);
}
return null;
}
}
Вы можете достичь желаемого, используя следующий код:
TestClass obj = new TestClass() { TestProperty = "Test Value" };
Object value = obj.GetPropertyValue("TestProperty"); // value = "Test Value"