app.config 中的结构配置哪种方法更好?

Which approach is better to structure configuration in app.config?

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

配置结构有两种方法:

方法一:

<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
    }
}

方法二:

<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
    }
}

另外:

模块可以解决如下问题:

我应该如何构建配置?

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

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