使用反射检测.NET中对象之间的循环引用



我的程序需要确定对象图是否包含循环引用。对象图包含各种类型的对象实例(都是从一个基类派生而来),如果形式良好,则应该形成一个层次结构。循环引用会在处理过程中导致无限循环。我需要在开始处理各个元素之前确定这一点,以生成适当的错误消息。

该程序是用C++/CLI编写的,目标是.NET 3.5。我想也许Reflection可以提供一些优雅的方式来实现这一点,但到目前为止,我还没能把这些东西组合在一起。

如果没有预先制作好的API,我可以构建一个堆栈并自己制作这样的函数;然而,由于涉及到各种各样的类,反射可能无论如何都会发挥作用。还是我找错树了?

没有使用反射检测循环的内置方法。然而,反思在这里似乎没有必要。

从你所说的,听起来这张图中的对象是你自己写的。我假设图中的每个对象都拥有到其他对象的链接,并且它们链接到的对象列表是公开的。由于它们都是从一个公共基类派生而来的,因此在那里实现应该不会很困难,而且您不需要担心所有不同的子类。

假设链接对象在基类上定义的公共API上可用,则遍历图以查找图中的循环并不困难;我想有多种众所周知的算法可以找到它们(尽管我承认我没有看过)。

相关内容

  • 没有找到相关文章