在app.config中构建配置哪种方法更好?

时间:2018-04-26 05:58:36

标签: c# .net configuration structure app-config

我的应用中有一些设备和一些模块使用设备来完成工作。

配置结构有两种方法:

方法1:

<device1>
   <configurationForModule1 />
   <configurationForModule2 />
</device1> 

<device2>
   <configurationForModule1 />
   <configurationForModule2 />
</device2>

然后使用类似下面的示例:

public class Module1 {
    private readonly _device1;

    public Module1(Device1 device1) {
        _device1 = device1;
        // configuration for this module in _device1.Configuration.Module1
    }
}

方法2:

<configurationForModule1>
    <device1 />
    <device2 />
</configurationForModule1>

<configurationForModule2>
    <device1 />
    <device2 />
</configurationForModule2>

然后使用类似下面的示例:

public class Module1 {
    private readonly _device1;

    public Module1(Module1Configuration configuration, Device1 device1) {
        _device1 = device1;
        // configuration for this module in configuration.Device1
    }
}

另外:

模块可以解决以下问题:

  • 从所有设备收集诊断数据
  • 基于来自不同设备的数据进行计算
  • 查看事件处理和执行设备命令

我应该如何构建配置?

1 个答案:

答案 0 :(得分:1)

根据您的解释,您的项目的主要实体看起来像是模块,设备的目的是让模块完成他们的工作。如果这是真的,那么方法2似乎是最合乎逻辑的。

此外,第二种方法允许您轻松提供与设备无直接关系的模块配置(例如数据库连接,资源位置或日志记录等);使用方法1,您必须为每个设备复制此信息。