加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何获取嵌套属性

发布时间:2020-12-15 04:26:17 所属栏目:百科 来源:网络整理
导读:我想检索一个PropertyInfo,这里代码: string propertyName="Text";PropertyInfo pi = control.GetType().GetProperty(propertyName); 它工作正常,但如果我想检索嵌套属性,它返回null: string propertyName="DisplayLayout.Override.RowSelectors";Property
我想检索一个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");

胜利的递归!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读