詳解C#讀取Appconfig中自界說的節點。本站提示廣大學習愛好者:(詳解C#讀取Appconfig中自界說的節點)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解C#讀取Appconfig中自界說的節點正文
明天在應用Nlog的時刻,發明了一個之前沒留意的成績。
之前,我的app設置裝備擺設文件都是這麼寫的,固然設置裝備擺設比擬多的時刻會改用xml。
假如<appSettings>節點中的內容許多的話,我本身有時刻都分不清哪一個是做甚麼的,能夠同伙們會說,你加個正文不就好了。然則可弗成以把一些雷同的設置裝備擺設放在一路呢,就像下面的nlog一樣。先試著改革下設置裝備擺設文件
<configSections>
<section name="mySection" type="ConfigSolution.ConfigSectionHandler,ConfigSolution"></section>
</configSections>
<mySection>
<port CPort="40001" WPort="40002" SPort="50000"></port>
<coustomAssembly CommandsAssembly="HX.Components.Command.Collection" CommandMessagesAssembly="HX.Components.CommandMessage.Collection"></coustomAssembly>
</mySection>
那末,怎樣獲得section裡的值呢?從configSections 元素開端到網優勢暴了一番。ConfigurationSection 類
然後曉得可以經由過程ConfigurationManager類的GetSection辦法獲得到設置裝備擺設文件的信息。(假如運用法式須要以只讀方法拜訪其本身設置裝備擺設,則關於 Web 運用法式,建議應用 GetSection() 重載辦法;關於客戶端運用法式,建議應用 ConfigurationManager.GetSection 辦法。----MSDN)
var mySection = ConfigurationManager.GetSection("mySection");
運轉一下法式嘗嘗,迎來了第一個異常。System.Configuration.ConfigurationErrorsException: 創立 mySection 的設置裝備擺設節處置法式時失足: 類型“ConfigSolution.ConfigSectionHandler”不從“System.Configuration.IConfigurationSectionHandler”繼續。 ---> System.TypeLoadException: 類型“ConfigSolution.ConfigSectionHandler”不從“System.Configuration.IConfigurationSectionHandler”繼續。
既然說我的ConfigSolution.ConfigSectionHandler不從System.Configuration.IConfigurationSectionHandler繼續,那好,我就繼續它,然後看看這個接口都有些甚麼器械,Ctrl+T一下(SharpDevelop的快捷鍵),這接口就一個辦法
直接MSDN一下,IConfigurationSectionHandler.Create 信息量不是很年夜,就一句話:IConfigurationSectionHandler.Create 辦法,創立設置裝備擺設節處置法式。算了,直接斷點跟蹤一下,果真有器械
好了,剩下的就是對xml的讀取了。直接把section return看看,
這回法式正常運轉了,且mySection 也拿到了設置裝備擺設文件
然則在法式中我們怎樣獲得這些設置裝備擺設數據呢?我創立了一個處置設置裝備擺設文件的MySectionHelper類,年夜體以下
public class MySectionHelper { readonly XmlNode _section; readonly XmlNode _coustomAssembly; public MySectionHelper(XmlNode section) { _section=section; _coustomAssembly= _section.SelectSingleNode("coustomAssembly"); } public string CommandsAssembly{get{return _coustomAssembly.Attributes["CommandsAssembly"].Value;}} }
嘗嘗行不可,我的設置裝備擺設文件
<configSections> <section name="mySection" type="ConfigSolution.ConfigSectionHandler,ConfigSolution"></section> </configSections> <mySection> <port CPort="40001" WPort="40002" SPort="50000"></port> <coustomAssembly CommandsAssembly="HX.Components.Command.Collection" CommandMessagesAssembly="HX.Components.CommandMessage.Collection"></coustomAssembly> </mySection>
運轉成果:
好了,一切完成。
以上所述就是本文的全體內容了,願望年夜家可以或許愛好。