0

TL;DR使用容器将运行时参数传递给构造函数是否被认为是一种不好的做法?

例如,我正在构建一个 WCF 解决方案,该解决方案具有使用ServiceHostFactoryBase实现动态构建的服务主机。这家工厂是我的作文根;它访问 Unity,对其进行设置并使用容器来解析ServiceHost. 但是,这个 ServiceHost 需要访问数据库中的一些配置,它使用“constructorString”来识别这个配置。

由于 Unity 是创建 my 实例的人ServiceHost,因此除了将参数传递给ParameterOverride. 但我不喜欢它。该参数不是依赖项,它是在运行时找到的参数。此外ServiceHost依赖于另一个也需要“constructorString”的类。所以我将依靠 Unity 来传递它。

我使用 Unity 3 作为我的 IoC 容器。

4

1 回答 1

1

使用容器将运行时参数传递给构造函数是否被认为是一种不好的做法?

是的。规则是使用构造函数注入编译时依赖项,使用方法调用注入运行时依赖项。

“编译时依赖项”是在编译时或配置时(当系统启动并使用容器连接依赖项时)已知的值。这允许容器为您构建对象图。

于 2013-06-30T20:48:35.257 回答