首页 新闻 赞助 找找看

动态获取属性的值

0
悬赏园豆:10 [已解决问题] 解决于 2014-03-04 16:34
    class Person
    {
        private string id;
        private string name;
        private Address homeAddr;
        public string ID
        {
            get { return id; }
            set { id = value; }
        }
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public Address HomeAddr
        {
            get { return homeAddr; }
            set { homeAddr = value; }
        }
    }

    class Address
    {
        private string cityname;
        private string postcode;
        public string CityName
        {
            get { return cityname; }
            set { cityname = value; }
        }
        public string PostCode
        {
            get { return postcode; }
            set { postcode = value; }
        }
    }

假设有一个Pserson实例,我想通过传入字符串获取该实例属性的值,比如

Name返回name的值,如果HomeAddr.PostCode则返回该实例中Address实例的PostCode值。
不用考虑传入字符串有误的情况,请问如何实现?
一羽赐命的主页 一羽赐命 | 初学一级 | 园豆:11
提问于:2014-03-03 08:37
< >
分享
最佳答案
1
var result = obj.GetType().GetProperty("属性名称").GetValue(obj, null);
收获园豆:10
幻天芒 | 高人七级 |园豆:37175 | 2014-03-03 13:05

请问,如果我要获取HomeAddr属性中的CityName属性,GetProperty("属性名称")属性名称要填什么?

一羽赐命 | 园豆:11 (初学一级) | 2014-03-03 19:30

你要获取属性值的那个属性的名称啊!!!

幻天芒 | 园豆:37175 (高人七级) | 2014-03-03 20:25

@幻天芒: 问题里说了啊

一羽赐命 | 园豆:11 (初学一级) | 2014-03-04 08:56

@一羽赐命: 填Name了。

幻天芒 | 园豆:37175 (高人七级) | 2014-03-04 13:14
其他回答(2)
0

这个非常明显需要使用反射

lucika.zh | 园豆:62 (初学一级) | 2014-03-03 08:59

我已经用反射验证了字符串是否有对应属性,却不知道如果获取字符串对应属性值,请问你知道吗?

支持(0) 反对(0) 一羽赐命 | 园豆:11 (初学一级) | 2014-03-03 09:17
1

       Type objType = obj.GetType();
       PropertyInfo[] objPropertiesArray = objType.GetProperties();//返回对象所有属性

       objProperty.GetValue(obj, null).ToString();//返回属性对应的值
        

help_hostwork | 园豆:6 (初学一级) | 2014-03-03 10:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册