动态获取类中组件的属性值

时间:2015-10-20 10:33:51

标签: c# reflection

我有以下课程

public class Statement
{
    public string Prop1 { get; set; }
    public string Prop2 { get; set; }
    public string Prop3 { get; set; }
    public Narrative Narrative { get; set; }
}

public class Narrative
{
    public string Narrative1 { get; set; }
    public string Narrative2 { get; set; }
    public string Narrative3 { get; set; }
}

我想动态获取Narrative1属性。任何人都可以帮助如何实现这一目标吗?

我知道如何使用reflection获取类的属性名称的值。这里是相同的代码。

public static object ReflectPropertyValue(object source, string property)
{
    return source.GetType().GetProperty(property).GetValue(source,null);
}

任何人都可以帮助如何在另一个属性中获取属性的值吗?

由于

1 个答案:

答案 0 :(得分:2)

假设你有一个Statement对象,你可以在你的方法中使用Narrative属性作为source。样本:

var statement = new Statement();
// fill properties... change object's state

// get the reference of narrative object
object narrative = ReflectPropertyValue(statement, "Narrative");

// get the value and safe cast it to string
var narrative1Value = ReflectPropertyValue(narrative, "Narrative1") as string;