4

这段代码:

foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(lst[0]))
{
   Console.WriteLine(descriptor.Name);
}

将写出我列表中所有元素的名称。即 FirstName / LastName 或什么。如何写出元素的子元素?如果我的列表有一个元素 Cars,它有汽车的类型和颜色,我将如何使用 TypeDescriptor 来写出来呢?

我现在得到的是:

我想要的是这样的:

  • 车:丰田,红色
  • 车:三菱、格林

有谁知道如何做到这一点?

4

3 回答 3

1

PropertyDescriptor-class 提供了一个名为 的方法GetChildProperties(System.Object)
您应该能够将当前对象的引用传递给该方法,并作为回报接收另一个包含子属性的集合。
从这个类继承以获得完整的功能甚至可能是有意义的。

有关文档,请参见此处

于 2013-03-27T15:10:13.613 回答
1

您需要检查对象类型,然后在类型正确时获取其属性。

foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(lst[0]))
{
   Console.WriteLine(descriptor.Name);

   if(descriptor.PropertyType == typeof(Car))
   {
      foreach(var child in descriptor.GetChildProperties())
      {
          Console.WriteLine(child.Name);
      }
   }   

}
于 2013-03-27T15:10:23.173 回答
0

想我明白了。只要我有我需要孩子(汽车)的类型,我就可以这样做:

    foreach (Car c in lst[0].Cars)
                {
                    PropertyInfo[] properties = car.GetType().GetProperties(); 
                    foreach (PropertyInfo item in properties)
                    {
                        string propertyName = item.Name;
                    }
                }
于 2013-03-27T17:41:32.763 回答