Dependency injection 如何管理通过依赖注入加载的组件的配置?
我正在构建一个应用程序,它将使用DI框架加载组件以从各种源(如外部web服务或DB)获取数据。现在,组件将需要一些应用程序配置,如web服务url或数据库连接字符串。将所有这些内容保存在Web.Config中并通过构造函数参数传递是我的基本选择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"/>
<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中只剩下真正的外部可配置选项。相关问题: