通过名称,如何获取对象的属性?比如现在我要获取Tearm的对象的PersonList[1].Name的值,传入的参数为字符串“PersonList[1].Name”(传入的参数可以是别的形式,如PersonList[2].Age,PersonList等)。PropertyInfo.GetValuepublic class Person
    {
        public string Name;
        public int Age;
    }public class Tearm
{
public IList<Person> PersonList
        {
            get
            {
                return new List<Person>(){new Person{Name="a",Age=1},new Person{Name="b",Age=2},new Person{Name="c",Age=3}};
            }
        }
}
//use case 
Tearm tearm=new Tearm();
string propertyTarget = "PersonList[1].Name";//可以有其他形式,如: object.p1.p2["key"].p3.value; and so on
            object propertyValue = tearm.PersonList[1].Name;//value="b"
            object propertyValue2 = GetObjectValue(tearm, propertyTarget);//怎么样写GetObjectValue才能达到获取到相同的效果

解决方案 »

  1.   

    试试用LINQ  你不是想通过name获取value吗 那就是name是已知的object propertyValue2 =tearm.PersonList.Select(p=>p.Name="a") 
      

  2.   

    没办法,自己解析,通过反射找到PersonList属性,然后访问其中数据
      

  3.   

    那你总知道要取集合中的第几个元素吧    tearm.PersonList.ElementAt(1)
      

  4.   

    FieldInfo和PropertyInfo,是不是要单独判断和处理?除了这2种,还有没有遗漏?