【问题标题】:How to manage configuration of components loaded via dependancy injection?如何管理通过依赖注入加载的组件的配置?
【发布时间】:2010-02-22 03:13:26
【问题描述】:

我正在构建一个应用程序,它将使用 DI 框架加载组件以从外部 Web 服务或数据库等各种来源获取数据。现在组件将需要一些应用程序配置,例如 Web 服务 url 或数据库连接字符串。将所有这些内容保存在 Web.Config 中并通过构造函数参数传递是我的基本选项。

<constructor>
  <param name="connectionString" parameterType="string">
    <value value="AdventureWorks"/>
  </param>
  <param name="dataService" parameterType="IMyService">
    <dependency />
  </param>
</constructor>

但此选项不可扩展,并且配置文件会随着组件数量的增长而变得庞大。任何人都可以建议更好的做法吗? 问候, 汤姆

【问题讨论】:

标签: dependency-injection web-config configuration-files


【解决方案1】:

它可以是 XML 或代码(但它们不是相互排斥的)。这就是大多数(所有?)IoC 容器所做的。例如,请参阅 Windsor 的 XML config docscode config (fluent registration) docs。另一个代码配置选项是创建 DSL,例如 Binsor

通常我混合使用这两种方法,尽可能多地在代码中注册,除了需要可配置的部分,它们作为 XML 配置。或者您甚至可以在代码中进行注册并从 appSettings 中读取简单的参数。

当然你也可以把你的配置放在INI-style config 甚至是数据库中,但这通常没有多大意义。

【讨论】:

  • +1 我想我知道你的意思(如果是这样我同意),但你的措辞听起来像是 XML 和代码是专有选项。重点是您可以将 XML 与代码混合使用(您似乎在其余答案中暗示了这一点),因此只有真正的外部可配置选项留在 XML 中。
猜你喜欢
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 2014-08-23
  • 1970-01-01
相关资源
最近更新 更多