我想检索一个PropertyInfo,这里是代码:
string propertyName="Text";
PropertyInfo pi = control.GetType().GetProperty(propertyName);
它工作正常,但如果我想检索嵌套属性,则返回null:
string propertyName="DisplayLayout.Override.RowSelectors";
PropertyInfo pi = control.GetType().GetProperty(propertyName);
有没有办法获得嵌套属性?
最诚挚的问候,
弗洛里安
编辑:我现在遇到一个新问题,我想获得一个属性为数组的属性:
string propertyName="DisplayLayout.Bands[0].Columns";
PropertyInfo pi = control.GetType().GetProperty(propertyName)
谢谢
答案 0 :(得分:8)
是:
public PropertyInfo GetProp(Type baseType, string propertyName)
{
string[] parts = propertyName.Split('.');
return (parts.Length > 1)
? GetProp(baseType.GetProperty(parts[0]).PropertyType, parts.Skip(1).Aggregate((a,i) => a + "." + i))
: baseType.GetProperty(propertyName);
}
调用:
PropertyInfo pi = GetProp(control.GetType(), "DisplayLayout.Override.RowSelectors");
胜利的递归!
答案 1 :(得分:3)
在你刚刚获得的PropertyType
财产上再做同样的事情(并根据需要重复):
PropertyInfo property = GetType().GetProperty(propertyName);
PropertyInfo nestedProperty = property.PropertyType.GetProperty(nestedPropertyName)
答案 2 :(得分:0)
你可以做到,但你必须为每个级别做“整件事”,意思是: