何时读取配置文件参数

时间:2011-03-05 05:25:24

标签: c# .net

您更喜欢在一个位置读取配置文件中的参数,并将它们作为参数传递给模块/函数,还是在需要时读取它们?

5 个答案:

答案 0 :(得分:2)

是的,我更倾向于将它们作为参数传递,而且它并不接近。除了设置应用程序根目录之外,System.Configuration类永远不会永远不会渗透到您的类中。

  1. 通过将它们作为参数传递,可以使依赖项显式化。
  2. 您避免让您的域类依赖System.Configuration
  3. 如果您没有将它们作为参数传递(而是在需要的时候/在需要时阅读它们),那么您违反了SRP。
  4. 如果你没有将它们作为参数传递(而是在需要的时候/在需要的地方读取它们),那么就会使测试变得困难。
  5. 如果您没有将它们作为参数传递(而是在需要时将其读取),则会增加维护成本。

答案 1 :(得分:2)

我不同意Jason's answer

组件通常最好从配置文件中读取自己的配置。

例如,在经典的3-tier architecture(表示,业务逻辑和数据访问)中,数据访问层最好从应用程序配置文件中获取自己的配置(数据库连接字符串等),而不是表示层需要关注它。

框架中的其他示例:

  • WCF基础结构从应用程序配置文件中读取自己的复杂配置信息。期望想要使用WCF的应用程序必须读取此配置信息并将其传递,这将是荒谬的。

  • ASP.NET成员资格子系统从web.config读取自己的配置数据。

答案 2 :(得分:1)

将它们作为参数传递或创建一个类来读取它们。你应该只从一个地方读取它们,所以如果它们改变了重构就很容易。

答案 3 :(得分:0)

这取决于,所有模块都需要这些参数吗?您的模块多久需要一次?等等。一种方法是在应用程序启动时读取它们。参数对象存储在dependency injection容器中,如UnitySpring.NET。并且在我的模块中需要时注入对象(当创建新模块时)。

如果很少使用这些参数,您可以在创建模块时按需加载它们。

答案 4 :(得分:0)

取决于场景。

通常配置文件与应用程序的配置有关;这意味着,根据这些配置,应用程序应做出决定。例如,连接字符串参数,或告诉应用程序在测试模式或实时模式下运行的参数。

此外,只有在访问特定功能时,应用程序才需要参数。