【发布时间】:2013-06-28 21:46:30
【问题描述】:
TL;DR 使用容器将 run-time 参数传递给构造函数是否被认为是一种不好的做法?
例如,我正在构建一个 WCF 解决方案,该解决方案具有使用 ServiceHostFactoryBase 实现动态构建的服务主机。这个工厂是我的Composition Root;它访问 Unity,对其进行设置并使用容器来解析 ServiceHost。但是,这个 ServiceHost 需要访问数据库中的一些配置,它使用“constructorString”来识别这个配置。
由于 Unity 是创建我的 ServiceHost 实例的人,因此除了通过 ParameterOverride 传递参数之外,我没有看到其他解决方案。 但我不喜欢它。该参数不是依赖项,它是一个参数,在运行时找到。 此外,ServiceHost 依赖于另一个也需要“constructorString”的类。所以我将依靠 Unity 来传递它。
我使用 Unity 3 作为我的 IoC 容器。
【问题讨论】:
标签: dependency-injection unity-container