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

私はそれを手に入れたと思います。(Cars) の子が必要なタイプがある限り、次のようにすることができます。

    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 に答える