c#配置文件中自定義塊節(jié)點(diǎn)的方法
在.netcore中我們非常方便獲取配置文件節(jié)點(diǎn)參數(shù),但是在非.netcore下一般 我們是使用中方法。
<appSettings> <add key="BranchCode" value="FS"/> </appSettings>
讀取方式也非常簡單直接
private string _defaultBranchCode = ConfigurationManager.AppSettings["BranchCode"].ToString();//運(yùn)營中心
但是如果有很多參數(shù),這樣寫感覺不夠美觀,以及容易遺漏。能否自定義一個(gè)塊節(jié)點(diǎn)呢? 答案是肯定了。
就這樣
<pdd> <!--基礎(chǔ)域名--> <add key="base_uri" value="xxxxxx"/> <!--測試環(huán)境--> <!--拼多多開放平臺(tái)分配給服務(wù)商應(yīng)用的唯一標(biāo)示--> <add key="target_client_id" value="xxxxxxx"/> <!-- 調(diào)用拼多多開放平臺(tái) client_id--> <add key="client_id" value="xxxxxxx"/> <!--調(diào)用拼多多開放平臺(tái) 秘鑰--> <add key="client_secret" value="xxxxxxxxf"/> </pdd> <configSections> <section name="pdd" type="System.Configuration.NameValueSectionHandler"/> </configSections>
對(duì)應(yīng)讀取
public class pddConfig : IPddConfig { private string _base_uri; private string _target_client_id; private string _client_id; private string _client_secret; public pddConfig() { try { var pddConfig = ConfigurationManager.GetSection("pdd") as NameValueCollection; _base_uri = pddConfig["base_uri"]; _target_client_id = pddConfig["target_client_id"]; _client_id = pddConfig["client_id"]; _client_secret = pddConfig["client_secret"]; } catch (Exception ex) { throw new Exception("PDD配置錯(cuò)誤, 請(qǐng)檢查配置文件", ex); } } public string base_uri { get { return _base_uri; } } public string target_client_id { get { return _target_client_id; } } public string client_id { get { return _client_id; } } public string client_secret { get { return _client_secret; } } } public interface IPddConfig { string base_uri { get; } string target_client_id { get; } string client_id { get; } string client_secret { get; } }
調(diào)用 。這里使用了注入,所以可以通過構(gòu)造函數(shù)獲取
builder.RegisterType<pddConfig>().As<IPddConfig>().InstancePerRequest(); builder.RegisterType<PddService>().As<IPddService>().InstancePerRequest();
public interface IPddService { } public class PddService : IPddService { public static string base_uri; public static string target_client_id; public static string client_id; public static string client_secret; public readonly IPddConfig _pddConfig; public PddService(IPddConfig PddConfig) { _pddConfig = PddConfig; GetConfig(); } public void GetConfig() { base_uri = _pddConfig.base_uri; target_client_id = _pddConfig.target_client_id; client_id = _pddConfig.client_id; client_secret = _pddConfig.client_secret; } }
有關(guān)System.Configuration.NameValueSectionHandler
理解 gpt平臺(tái)回答
System.Configuration.NameValueSectionHandler
是 .NET Framework 中的一個(gè)類,用于解析配置文件中的 Name-Value(鍵值對(duì))形式的節(jié)(section)。
在應(yīng)用程序或組件的配置文件(通常是 app.config 或 web.config)中,可以定義自定義的配置節(jié)來存儲(chǔ)特定的設(shè)置。NameValueSectionHandler
可以幫助解析這樣的配置節(jié),使其信息可供應(yīng)用程序使用。
NameValueSectionHandler
遵循配置節(jié)處理程序(Section Handler)的標(biāo)準(zhǔn)規(guī)范,它提供了解析配置節(jié)并返回鍵值對(duì)的功能,其中鍵和值都是字符串類型。通過使用 NameValueSectionHandler
,可以方便地讀取和解析配置文件中的特定配置節(jié),并將其作為鍵值對(duì)的集合在應(yīng)用程序中使用。
要使用 NameValueSectionHandler
,需要在配置文件中定義一個(gè)自定義節(jié),并指定 type
屬性為 System.Configuration.NameValueSectionHandler
。例如,在 app.config 文件中定義如下的配置:
<configuration> <configSections> <section name="MyCustomSection" type="System.Configuration.NameValueSectionHandler" /> </configSections> <MyCustomSection> <add key="Key1" value="Value1" /> <add key="Key2" value="Value2" /> </MyCustomSection> </configuration>
然后,可以通過以下方式在代碼中讀取和解析配置節(jié):
NameValueCollection mySection = ConfigurationManager.GetSection("MyCustomSection") as NameValueCollection; string value1 = mySection["Key1"]; string value2 = mySection["Key2"];
上述代碼通過 ConfigurationManager.GetSection
方法獲取指定名稱的配置節(jié),并將其轉(zhuǎn)換為 NameValueCollection
對(duì)象。然后,通過鍵(Key)來獲取相應(yīng)的值(Value)。
需要注意的是,System.Configuration.NameValueSectionHandler
在 .NET Framework 4.0 及更高版本中已經(jīng)被廢棄,推薦使用更現(xiàn)代化的配置方式,例如使用自定義配置節(jié)和自定義配置節(jié)處理程序(Section Handler)來替代。
以上就是c#配置文件中自定義塊節(jié)點(diǎn)的方法的詳細(xì)內(nèi)容,更多關(guān)于c#配置自定義塊節(jié)點(diǎn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
WinForm使用DataGridView實(shí)現(xiàn)類似Excel表格的查找替換功能
這篇文章主要介紹了WinForm使用DataGridView實(shí)現(xiàn)類似Excel表格的查找替換功能,現(xiàn)在小編通過本文給大家分享查找替換實(shí)現(xiàn)過程,需要的朋友可以參考下2021-07-07C#使用throw和throw?ex拋出異常的區(qū)別介紹
這篇文章介紹了C#使用throw和throw?ex拋出異常的區(qū)別,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10C#關(guān)聯(lián)自定義文件類型到應(yīng)用程序并實(shí)現(xiàn)自動(dòng)導(dǎo)入功能
今天通過本文給大家分享C#關(guān)聯(lián)自定義文件類型到應(yīng)用程序并實(shí)現(xiàn)自動(dòng)導(dǎo)入功能,代碼中寫入了兩個(gè)注冊(cè)表,實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09C#執(zhí)行存儲(chǔ)過程并將結(jié)果填充到GridView的方法
這篇文章主要介紹了C#執(zhí)行存儲(chǔ)過程并將結(jié)果填充到GridView的方法,結(jié)合實(shí)例形式分析了C#存儲(chǔ)過程操作及GridView控件相關(guān)操作技巧,需要的朋友可以參考下2017-02-02Unity實(shí)戰(zhàn)之制作動(dòng)畫編輯器
為了更方便地為UI視圖添加動(dòng)畫,將動(dòng)畫的編輯功能封裝在了UI View類中,可以通過編輯器快速的為視圖編輯動(dòng)畫。本文將通過Unity制作一個(gè)動(dòng)畫編輯器,需要的可以參考一下2022-02-02