如何使用Spring.NET IoC获得我的依赖关系的图形表示?

时间:2011-09-16 14:17:31

标签: c# spring.net

我正在使用Spring.NET的IoC容器,一切都运行良好......直到现在。不知何故,在我们之前的一个版本中,我们引入了循环依赖。由于我们使用基于setter的注入而不是基于构造函数的注入,Spring.NET只是保持哼唱,但我们的应用程序的行为发生了变化。

现在我有一个包含大约一百个组件的解决方案,并且在那堆组件中存在一个循环依赖,我现在需要找到它。

是否有任何工具可以使用我的Spring.NET配置文件并为我提供组件及其依赖项的图形图片?

1 个答案:

答案 0 :(得分:3)

AFAIK没有这样的工具可用,虽然有一个用于Java的spring。 这thread on the spring.net forum  讨论了这个问题并提出了解决方案。 我使用QuickGraph基于Thomas Darimont的方法做了一个快速而肮脏的概念证明。

对于以下配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">

  <object id="a1" type="q7446068.ClassA, q7446068" >
    <property name="MyOtherA" ref="a2" />
  </object>

  <object id="a2" type="q7446068.ClassA, q7446068" >
    <property name="MyOtherA" ref="a1" />
  </object>

  <object id="a3" type="q7446068.ClassA, q7446068" />

</objects>

我能够创建以下点文件:

digraph G {
    0 [label="a1"];
    1 [label="a2"];
    2 [label="a3"];
    0 -> 1 [];
    1 -> 0 [];
}

using graphviz to make a trivial picture

显示循环依赖。

代码可用as a gist