如何处理改变的ConfigurationSection-Definition
本文关键字:改变 ConfigurationSection-Definition 处理 何处理 | 更新日期: 2023-09-27 18:12:41
我有一个配置文件,我与ConfigurationManager阅读。有些章节是我自己定义的
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="applicationWideSettingsSection" type="MyTestApp.ApplicationSettings.ApplicationWideSettingsSection, MyTestAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
<applicationWideSettingsSection>
<pathToSomeFile value="C:'Users'..." />
</applicationWideSettingsSection>
</configuration>
有新的要求:现在我必须在applicationwidettingssection中存储另一个值,像这样:
<applicationWideSettingsSection>
<pathToSomeFile value="C:'Users'..." />
<pathToSomeOtherFile value="C:'Programs'..." />
</applicationWideSettingsSection>
所以我改变了applicationwidettingssection的定义。如果我现在用旧的配置文件运行应用程序,它会在这一行抛出一个异常:
var configSection = _config.GetSection("applicationWideSettingsSection");
因为只有pathToSomeFile-Setting而另一个缺失了。是否有一种方法可以手动添加另一个(默认值)到此部分?你会怎么处理这种情况?
提前感谢,Joerg
因为我不想改变我的设计远离我的自定义设置类型,我找到了一个不同的方法:我将IsRequired设置为false,因此当缺少该设置时不会抛出异常。如果没有,我将它设置为代码中的某个值。在另一种方法中,我想覆盖一些Configuration-Section方法,但没有让它工作…
现在我必须在applicationwidettingssection中存储另一个值
可以使用键值对代替自定义类型ApplicationWideSettingsSection
,因此
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="applicationWideSettingsSection"
type="System.Configuration.NameValueSectionHandler" />
</configSections>
<applicationWideSettingsSection>
<pathToSomeFile value="C:'Users'..." />
</applicationWideSettingsSection>
</configuration>
这将存储一个或多个参数,并允许您枚举内部参数。你也可以试试DictionarySectionHandler
。我在这篇文章中找到了示例代码