C# · 12月 23, 2021

c# – 如何获取嵌套属性

我想检索一个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)

谢谢

解决方法 是: 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”);

胜利的递归!