Enterprise Library 4.0 学习笔记(-) Configuration-Migration篇
程序配置在现代开发中起着基石的作业,微软在这个潮流中将其发挥到了极致。有变化的地方,就有配置,程序的变化越多,配置就越多。
为了更好的管理,在.net程序中,所有配置信息都可以配置在App.config或Web.config文件中,以当前QuickStart为例:
<configuration>
<configSections>
<section name="EditorSettings" type="ConfigurationMigrationQuickStart.EditorFontData, ConfigurationMigrationQuickStart, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
从上面配置文件可以看出,自定义节点 EditorSettings首先要从configSections中注册自定义信息,name为节点名词,type为自定义节点要转化的类型。
文中为EditorFontData,类型定义如下:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
所有可转化的配置类必须继承ConfigurationSection类。对照节点
<EditorSettings name="Verdana" size="24" style="2" />
可以看出,EditorSettiongs中的三种属性和EditorFontData中的属性是一一对应的,而对应关系为ConfigurationProperty标识。
a)读取配置(readXmlConfigDataButton_Click事件):
要得到配置信息,只要我们添加一句代码:
这一层关系理清之后,我们就知道。net是如何做配置的,接着再去看一下.net全局配置文件machine.config,所有的配置信息原来是这样的(恍然大悟),
详细做法可参考 官方说明
b)修改配置(writeXmlConfigDataButton_Click事件):
// Write the new configuration data to the XML file
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.Sections.Remove("EditorSettings");
config.Sections.Add("EditorSettings", configData);
config.Save();
修改节点值的方法:先移除,再新增,最后保存(configData就为EditorFontData类型)。
配置模块的应用主要思想就是上面说的两点。
需要注意的是,如果更新了配置信息而不刷新(ConfigurationManager.RefreshSection("EditorSettings");),再用a的方式访问配置信息,将只能得到第一次访问的值(ConfigurationManager有缓存)。