1

我想了解一个大量使用StructureMap(IOC/DI容器框架)的项目。所有共享组件的接口都包含在一个由所有其他项目引用的项目中。IOC/DI如何影响依赖关系维护?

试图构建依赖关系层次结构时,我发现检测哪个项目依赖于其他项目非常困难,因为没有直接的项目引用,只有对接口项目的单个引用。

我该如何构建层次结构树?相反,将所有接口集中在单个超级项目良好实践中,或者应该是“正常”,即每个项目都包含自己的公共接口(以及实现它的预定义具体类)。这也可以通过简单地跟随参考项目轻松地构建层次结构。

回答

1

这可能有点主观,但我会主张在一个单独的项目中包含接口,而这些接口并不相互关联。如果您的应用程序的不同部分有不同的项目,则这些项目的接口也应该是分开的。虽然有时可能有理由将接口放在与实现不同的项目中,但如您所描述的,将多个实施项目的接口组合成一个巨型接口项目不太可能。

如果您遇到了这种情况,并且想要揭示真正的运行时依赖关系,那么您可能需要检查配置,这可能使用注册表DSL,或者可能需要解析XML配置。

+0

我完全同意接口分离。我想知道是否有一个具体的IOC容器相关原因,不是像你所描述的那样以“正常”方式来做,但似乎没有。 – mafu 2012-04-18 11:41:34

+0

关于依赖关系,如果我得到这个权限,注册表DSL只会讲述容器中组件之间的依赖关系,而不是关于更高级别的项目,因此这是一幅非常不完整的图片。我假设我在那里运气不好,不得不手动弄清楚这一点? – mafu 2012-04-18 11:47:12

+0

你是对的,你可能必须增加从注册表或xml中获得的信息,并且必须手动计算出这些连接的信息,除非你的IDE有帮助。这可能是一团糟! – 2012-04-18 19:13:11