我不知道該主題的標題是否正確,但這是我想要的。c#遞歸分解類
比方說,我有一個類,它可以有另一個類,等等。
我想要什麼,它是獲取類的字段,最終在一個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);
}
}
}
,但只得到了第一級。第一個參數是我想要分解的對象,第二個參數是返回類的列表對象。 你能幫助我嗎? 謝謝。
那麼,爲什麼不串被分解成一個長度屬性的對象?什麼使它特別?還有哪些其他類型是「特殊」的,不應該再分解了? – Servy
您是否嘗試過使用調試器並在行上設置斷點if(pi.GetType()。GetFields()。Length> 0)'?然後看看'pi.GetType()。GetFields()'的值是在'pi'指向地址時的值。 – FrankPl
但我需要根據每個對象在多個層次上的列表。我希望我明白這一點。 – user2536272