【问题标题】:Is it a bad practice to pass parameters through a IoC Container?通过 IoC 容器传递参数是一种不好的做法吗?
【发布时间】: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


    【解决方案1】:

    将运行时参数传递给 使用容器的构造函数?

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

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

    【讨论】:

      猜你喜欢
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 2011-08-07
      • 2012-08-15
      • 2011-04-28
      • 1970-01-01
      • 2017-05-06
      相关资源
      最近更新 更多