トピックのタイトルが正しいかどうかはわかりませんが、ここに私が欲しいものがあります。
クラスがあり、そのクラスが別のクラスを持つことができるとしましょう。
私が望むのは、クラスのフィールドを、最終的に複数のレベルを持つ List ジェネリックで取得することです。
たとえば、私がこれを持っているとしましょう:
class address
{
public string street;
public string number;
}
class Student
{
public string name;
public string surname;
public address addr;
}
たとえば、メソッドが必要です
Student s;
getItems(s);
名前、姓、および通りと番号を含む別のリストを含むリストが返されます。
私はこれを試しました:
public void getItems(Object o, List<object> list)
{
FieldInfo[] f = new FieldInfo[o.GetType().GetFields().Length];
f = o.GetType().GetFields();
foreach (FieldInfo fi in f)
{
if (fi.GetType().GetFields().Length > 0)
{
List<object> newList = new List<object>();
list.Add(newList);
getItems(fi, newList);
}
else
{
list.Add(fi.Name);
}
}
}
しかし、それは最初のレベルにしか到達しません。最初のパラメータは分解したいオブジェクトで、2 番目のパラメータはクラスを返すリスト オブジェクトです。みんな助けてくれませんか?ありがとう。