TL; DR通过使用容器将参数运行时间参数传递给构造函数是否被认为是不良做法?通过IoC容器传递参数是一种不好的做法吗?
作为示例,我构建了一个WCF解决方案,该解决方案使用ServiceHostFactoryBase
实现动态构建服务主机。这家工厂是我的Composition Root;它访问Unity,设置它并使用容器来解析ServiceHost
。但是,此ServiceHost需要访问数据库中的某些配置,并使用“constructorString”来标识此配置。
由于Unity是创建我的ServiceHost
实例的人,所以我没有看到通过ParameterOverride
传递参数的其他解决方案。 但我不喜欢它。该参数不是一个依赖项,它是一个在运行时找到的参数。 此外,ServiceHost
依赖于还需要“constructorString”的另一个类。所以我会依靠Unity来传递这些信息。
我使用Unity 3作为我的IoC容器。