我们的应用程序中使用了很多配置文件。每个客户至少有 100 个不同的 xml 文件,其中包含至少 50-80 个名称/值对的配置,并且所有这些文件都经常更改(至少每个月)。
配置文件如下所示,
<property id="url" value="s123"/>
<property id="input-element-name" value="name" />
<property id="input-element-xpath" value="//body;//form;//table[3];" />
目前,为了从 xml 文件中读取这些值,我们使用 XmlReader 等,并在应用程序启动后将其存储在缓存中(当我们的客户群增加时,明天这可能会很大)。为了访问属性 ID,我们在静态类中创建了 const 变量以避免拼写错误等,
当我们的配置较少时,这种方法非常有用。现在,维护并向此配置文件添加任何新内容是很痛苦的。需要进行重建等,只是消除了将可配置值保留在代码之外的概念。
我只是想知道 .NET 领域的最新发展(例如 M 语言、IronPython)是否可以帮助在配置文件更改时按需动态键入和编译配置值。我们对 xml 格式的配置没有任何保留。
总之,我需要的是一些具有我们的配置值的 .XXX 文件,如果更改或添加了任何内容,这些文件应该自动编译并可以在我们的应用程序中使用而无需创建常量等,我知道会发生类似的情况在 VS 中使用 .T 文件。我希望这是可行的..
更新
这个问题的想法似乎没有被正确理解,否则我就不会正确拼写。抱歉给您带来麻烦。
自定义配置部分可能不适合此问题,原因是如果我添加任何新的名称/值对,则使用 ConfigurationSection
需要修改代码。但是,如果仅更改值,因为名称部分映射到代码中的属性,则此方法将起作用。
我想知道如果我使用任何动态语言品种,例如 IronPython 或 M Language,我可以将所有 XML 移动到其中,并且在我的应用程序中我可以看到对此文件的任何更改(使用“FileSystemWatcher”)并且执行它来读取新添加的配置名称/值对。
最佳答案
您可以实现任意数量的自定义 ConfigurationSections如你所愿。
这将允许您将配置模型建模为强类型对象。
关于c# - .NET 中的类型化配置值/变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2271595/