moh*_*sti 2 c# asp.net reflection
这里给出了一个解决方案,通过提供其名称来获取类的属性值.现在我想知道在这种情况下我怎么能这样做:
我有一个MyClass类.这个类有一个名为foo的Foo类型的属性.在美孚有类型的属性栏名为栏.和bar有一个名为value的字符串属性.
属性不是静态的.
我希望能够通过将字符串"foo.bar.value"作为propertyName 传递来获取foo.bar.value的值.换句话说,我想传递属性路径来获取它的值.
可能吗 ?
您可以使用递归方法执行此操作.每次调用都使用路径中第一个单词的值,并使用部分的其余部分再次调用该方法.
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)