App.Config是必须的,它是EntLib配置管理的入口,其中enterpriseLibrary.ConfigurationSource(ConfigurationSection)指明My.Config的确切位置。
要在运行时成功保存的自定义ConfigurationSection(派生于SerializableConfigurationSection)需要注意:
1. FileConfigurationSource的Save方法用于EntLib内部调用不宜直接调用,保存应直接将一个Section用Add方法加入到Section集合中。(在Add方法中会调用Save方法,而在Save方法中会调用.Net20提供的Configuration先Remove具有同名的节,然后再添加给定节。)
2. 不能直接将运行时的Section保存,需要为其实现一个Clone方法,创建一个Section的副本,然后用这个副本作为参数调用Add方法。通过Reflector查看Configurtion的Sections管理机制可以发现,如果直接使用Section其SectionInfomation.Atteched=true(内部),这将导致InvalidOperationException异常。实现Clone方法避免这一标志被置位。见如下代码:
1
public class MySettings : SerializableConfigurationSection
2
2