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值。
不用考虑传入字符串有误的情况,请问如何实现?
var result = obj.GetType().GetProperty("属性名称").GetValue(obj, null);
请问,如果我要获取HomeAddr属性中的CityName属性,GetProperty("属性名称")属性名称要填什么?
你要获取属性值的那个属性的名称啊!!!
@幻天芒: 问题里说了啊
@一羽赐命: 填Name了。
这个非常明显需要使用反射
我已经用反射验证了字符串是否有对应属性,却不知道如果获取字符串对应属性值,请问你知道吗?
Type objType = obj.GetType();
PropertyInfo[] objPropertiesArray = objType.GetProperties();//返回对象所有属性
objProperty.GetValue(obj, null).ToString();//返回属性对应的值