0
我有一個場景,我需要遞歸檢查由對象持有的所有引用(不管它是公有還是私有)。我需要檢查的對象非常複雜,並且有很多不同的類型,所以如果可能的話,我寧願一般地寫它。如何爲對象一般構建參考圖形
像這樣(只是一個例子,該API並不重要):
var myObject = new MyObject();
var graph = GetGraph(myObject);
foreach (var reference in graph.References)
{
foreach (var subreference in reference.References)
{
// etc.
}
}
它並不需要處理循環引用。事實上,如果它在循環引用上爆炸,那就好了,因爲這正是我想要檢測的。我猜想一些聰明的反射可以做到這一點,但我對反射不是很有經驗。有任何想法嗎?
你能幫助一個工具嗎? http://www.amberfish.net/download.aspx這是一個組件檢查器,可以直觀地顯示程序集中的所有引用。 – Schwarzie2478 2014-09-29 14:20:38
這可能是重複的:http://stackoverflow.com/questions/1443548/printing-full-object-graph-using-c-sharp-and-reflection – Mrchief 2014-09-29 14:24:54
你的意思是對象引用或類型引用?反射旨在返回類型信息,而不是對象信息。但是,它可以顯示有關私人成員的信息;另一方面,我不清楚你是否想要類型或數據(或可能是兩者)。如果你想走一個對象樹來尋找對象引用,你不一定需要反射。 – 2014-09-29 14:55:05