Dependency injection 如何管理通过依赖注入加载的组件的配置?

Dependency injection 如何管理通过依赖注入加载的组件的配置?,dependency-injection,web-config,configuration-files,Dependency Injection,Web Config,Configuration Files,我正在构建一个应用程序,它将使用DI框架加载组件以从各种源(如外部web服务或DB)获取数据。现在,组件将需要一些应用程序配置,如web服务url或数据库连接字符串。将所有这些内容保存在Web.Config中并通过构造函数参数传递是我的基本选择 <constructor> <param name="connectionString" parameterType="string"> <value value="AdventureWorks"/>

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

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

但这个选项是不可伸缩的,而且随着组件数量的增加,配置文件可能会变得庞大。有谁能建议更好的练习吗? 当做 Tom

要么是XML,要么是代码(但它们并不相互排斥)。这就是大多数(所有?)IoC容器所做的。例如,请参见温莎和。另一个代码配置选项是创建DSL,如

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


当然,您也可以将配置放在数据库或甚至数据库中,但这通常没有多大意义。

+1我想我知道您的意思(如果是的话,我也同意),但您的措辞听起来像是XML和代码是专用选项。关键是,您可以将XML与代码混合(您在回答的其余部分似乎暗示了这一点),这样,XML中只剩下真正的外部可配置选项。相关问题: