TL;DR使用容器将运行时参数传递给构造函数是否被认为是一种不好的做法?
例如,我正在构建一个 WCF 解决方案,该解决方案具有使用ServiceHostFactoryBase
实现动态构建的服务主机。这家工厂是我的作文根;它访问 Unity,对其进行设置并使用容器来解析ServiceHost
. 但是,这个 ServiceHost 需要访问数据库中的一些配置,它使用“constructorString”来识别这个配置。
由于 Unity 是创建 my 实例的人ServiceHost
,因此除了将参数传递给ParameterOverride
. 但我不喜欢它。该参数不是依赖项,它是在运行时找到的参数。此外,ServiceHost
依赖于另一个也需要“constructorString”的类。所以我将依靠 Unity 来传递它。
我使用 Unity 3 作为我的 IoC 容器。