我有一个使用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>
有新的要求:现在我必须在applicationWideSettingsSection中存储另一个值,如下所示:
<applicationWideSettingsSection>
<pathToSomeFile value="C:\Users\..." />
<pathToSomeOtherFile value="C:\Programs\..." />
</applicationWideSettingsSection>
所以我改变了我对applicationWideSettingsSection的定义。如果我现在使用旧的config-File运行应用程序,它会在此行引发异常:
var configSection = _config.GetSection("applicationWideSettingsSection");
因为只有pathToSomeFile-Setting而另一个缺失。 有没有办法手动添加另一个(默认值)到此部分? 你会怎么处理这个?
提前致谢,Joerg
答案 0 :(得分:1)
因为我不想将我的设计从我的自定义设置类型中改变,所以我发现了一种不同的方式: 我将IsRequired设置为false,因此当缺少设置时不会抛出异常。如果它丢失了,我将其设置为代码中的某个值。 在另一种方法中,我想覆盖一些Configuration-Section方法,但没有让它工作......
答案 1 :(得分:0)
现在我必须在applicationWideSettingsSection
中存储另一个值
您可以使用键值对来代替自定义类型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>
这将存储1个或多个参数,并允许您枚举内部参数。您也可以尝试DictionarySectionHandler
。我在此post找到了示例代码。