0

我作为 IoC 与 Castle Windsor 合作。我正在查看一个团队成员编写的一些代码,并试图弄清楚这里的最佳实践是什么。写这篇文章的方式对我来说有些奇怪,但我没有经验来说明应该做什么。

有两个 Castle 配置(这是我的第一个抱怨,但为了避免怀疑,假设这没关系)。比方说:cfgMaincfgSub

有一个主类负责设置应用程序并使其运行。(它可以是一个带有 Main() 或 Global.asax 的类,没关系)。比方说:MainClass

还有一个DependentClass

MainClass 实例化 aCastleContainer并将 cfgMain 安装到其中,然后 Resolves DependentClass

DependentClass创建另一个 CastleContainer并安装cfgSub在其中。这就是我遇到的问题

似乎在通过 IoC 创建的类内部有一个硬编码的配置路径是灾难的根源。这也使得单元测试变得非常困难。

号召性用语:这里的最佳做法是什么?是否应该合并所有配置?如果有理由(阅读:需要)将它们分开怎么办?

4

1 回答 1

1

如果没有关于为什么有两种配置的信息,就无法判断。

但是假设有一个原因,这两个类听起来都是Composite Root的一部分,这是一个靠近应用程序开始的地方,它连接了所有容器依赖项。主类是第一个配置的组合根,第二个配置的依赖类。仍然没有任何问题。

我想说用第一个容器解析依赖类是没有意义的——复合根是一个具体的类,没有理由替换它。但是,容器用于实例化它可能还有另一个原因——依赖关系。如果依赖类本身依赖于其他服务,那么使用主配置解决它听起来像是解决这些依赖关系的唯一方法。

最终,在没有其他信息的情况下,我会说(在所有这些假设下)你所描述的可能是有道理的。

但是,我强烈建议检查两个单独的配置和两个单独的复合根的需要。听起来过于复杂。

于 2013-10-29T21:49:46.997 回答