.NET环境下Configuration 与ConfigurationManager/ AppSettings 与 ConfigSections探讨

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述.NET环境下Configuration 与ConfigurationManager/ AppSettings 与 ConfigSections探讨相关的知识,希望能为你提供帮助。
关于配置文件的设置,读取有不少细节需要注意的。A   一般情况下,配置文档会默认使用其下的AppSettings属性中的值。
  以下为普通的VB代码实现方式: 
        Dim exeFileMap As ExeConfigurationFileMap = New ExeConfigurationFileMap()        exeFileMap.ExeConfigFilename = configFilePath
        Dim configCache As Configuration 
= ConfigurationManager.OpenMappedExeConfiguration(exeFileMap, ConfigurationUserLevel.None)  
        Dim rtnValue = configCache.AppSettings.Settings(strKey).Value
 
B 对于客户自定义的Section必须放在configSections中,在读取这些Section过程时。
需要根据App.Config文件路径,进行判断。
    (1) 对于默认路径下App.Config, 可以直接用
【.NET环境下Configuration 与ConfigurationManager/ AppSettings 与 ConfigSections探讨】      Dim  nb As System.Collections.Hashtable
= CType(System.Configuration.ConfigurationManager.GetSection("MajorCommands"),_
System.Collections.Hashtable)
      Dim rtnValue = nb(strkey) 
    (2) 对于人为定义的路径,即A中的情况
        Dim myParamsSection As ConfigurationSection = configCache.GetSection("USERSECTION")
        Dim myParamsSectionRawXml As String = myParamsSection.SectionInformation.GetRawXml()        Dim sectionXmlDoc As Xml.XmlDocument = New Xml.XmlDocument()        sectionXmlDoc.Load(New StringReader(myParamsSectionRawXml))        Dim handler As NameValueSectionHandler = New NameValueSectionHandler()        Dim handlerCreatedCollection As Specialized.NameValueCollection        handlerCreatedCollection = CType(handler.Create(Nothing, Nothing, sectionXmlDoc.DocumentElement), Specialized.NameValueCollection)        If Not handlerCreatedCollection.AllKeys.Contains(key) Then            Return defaultData        Else            Return handlerCreatedCollection(key)        End If 
  配置文件中需要增加
  < configSections>     < section name ="USERSECTION"              type ="System.Configuration.DictionarySectionHandler" />   < /configSections>   < appSettings> < /appSettings>
 
  < USERSECTION>  
    < !--Customize-->     < add key ="key1" value ="https://www.songbingjia.com/android/SHINSHO"/>     < add key ="key2" value ="https://www.songbingjia.com/android/SOJITZ"/>     < add key ="key3" value ="https://www.songbingjia.com/android/SUMITOMO"/>     < add key ="key4" value ="https://www.songbingjia.com/android/MITSUBISHI ELECTRIC"/>     < add key ="key5" value ="https://www.songbingjia.com/android/MITSUBISHI"/>   < /USERSECTION>          
  当然,如果直接用XML读取控件,来实现也能达到同样的效果。
如果再有疑惑,请直接阅读微软的源代码
  https://referencesource.microsoft.com/#System.Configuration 



    推荐阅读