2013-06-28 31 views
0

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

作为示例,我构建了一个WCF解决方案,该解决方案使用ServiceHostFactoryBase实现动态构建服务主机。这家工厂是我的Composition Root;它访问Unity,设置它并使用容器来解析ServiceHost。但是,此ServiceHost需要访问数据库中的某些配置,并使用“constructorString”来标识此配置。

由于Unity是创建我的ServiceHost实例的人,所以我没有看到通过ParameterOverride传递参数的其他解决方案。 但我不喜欢它。该参数不是一个依赖项,它是一个在运行时找到的参数。 此外ServiceHost依赖于还需要“constructorString”的另一个类。所以我会依靠Unity来传递这些信息。

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

回答

0

通过使用容器将运行时参数传递给 构造函数是否被认为是不良做法?

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

'编译时间依赖性'是一个在编译时或配置时已知的值(当系统启动并且使用容器连接依赖项时)。这允许容器为您建立对象图。

相关问题