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