【发布时间】:2012-05-20 21:00:34
【问题描述】:
我想实现一个方法,它接收一个根对象并返回一个列表,其中包含对从根对象开始可以到达的所有对象的引用。它的签名是这样的:
static List<object> EnumerateObjectsInRange(object root);
我正在考虑使用GetProperties() 检索PropertyInfo 对象的数组,然后使用GetValue() 获取这些属性的值,最后为每个值再次调用GetProperties() 并重复此过程直到整个对象图表已被访问,但我不确定这是否是最好的方法。
有什么建议吗?
编辑:
对于可达,我可以想到两个定义:
- 根对象的所有者可以访问的所有对象(公共可用对象)。
- 根对象所属的对象图引用的所有公共和私有对象。
第一个定义足以满足我的目的。
【问题讨论】:
-
你需要一个递归算法。基本上它就像一个BF搜索。
-
要获得更多/更好的建议,您必须说明它的用途,以及“可达”的确切含义。
标签: c# reflection reference