通过asp.net中的路径获取属性的值

moh*_*sti 2 c# asp.net reflection

这里给出一个解决方案,通过提供其名称来获取类的属性值.现在我想知道在这种情况下我怎么能这样做:

我有一个MyClass类.这个类有一个名为foo的Foo类型的属性.在美孚有类型的属性名为.和bar有一个名为value的字符串属性.

属性不是静态的.

我希望能够通过将字符串"foo.bar.value"作为propertyName 传递来获取foo.bar.value的值.换句话说,我想传递属性路径来获取它的值.

可能吗 ?

Ami*_*ach 5

您可以使用递归方法执行此操作.每次调用都使用路径中第一个单词的值,并使用部分的其余部分再次调用该方法.

public object GetPropertyValue(object o, string path)
{
    var propertyNames = path.Split('.');
    var value = o.GetType().GetProperty(propertyNames[0]).GetValue(o, null);

    if (propertyNames.Length == 1 || value == null)
        return value;
    else
    {
        return GetPropertyValue(value, path.Replace(propertyNames[0] + ".", ""));
    }
}
Run Code Online (Sandbox Code Playgroud)