c#配置文件中自定義塊節(jié)點的方法
在.netcore中我們非常方便獲取配置文件節(jié)點參數(shù),但是在非.netcore下一般 我們是使用中方法。
<appSettings>
<add key="BranchCode" value="FS"/>
</appSettings>讀取方式也非常簡單直接
private string _defaultBranchCode = ConfigurationManager.AppSettings["BranchCode"].ToString();//運營中心
但是如果有很多參數(shù),這樣寫感覺不夠美觀,以及容易遺漏。能否自定義一個塊節(jié)點呢? 答案是肯定了。
就這樣
<pdd>
<!--基礎域名-->
<add key="base_uri" value="xxxxxx"/>
<!--測試環(huán)境-->
<!--拼多多開放平臺分配給服務商應用的唯一標示-->
<add key="target_client_id" value="xxxxxxx"/>
<!-- 調用拼多多開放平臺 client_id-->
<add key="client_id" value="xxxxxxx"/>
<!--調用拼多多開放平臺 秘鑰-->
<add key="client_secret" value="xxxxxxxxf"/>
</pdd>
<configSections>
<section name="pdd" type="System.Configuration.NameValueSectionHandler"/>
</configSections> 對應讀取
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配置錯誤, 請檢查配置文件", 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; }
}調用 。這里使用了注入,所以可以通過構造函數(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;
}
}有關System.Configuration.NameValueSectionHandler 理解 gpt平臺回答
System.Configuration.NameValueSectionHandler 是 .NET Framework 中的一個類,用于解析配置文件中的 Name-Value(鍵值對)形式的節(jié)(section)。
在應用程序或組件的配置文件(通常是 app.config 或 web.config)中,可以定義自定義的配置節(jié)來存儲特定的設置。NameValueSectionHandler 可以幫助解析這樣的配置節(jié),使其信息可供應用程序使用。
NameValueSectionHandler 遵循配置節(jié)處理程序(Section Handler)的標準規(guī)范,它提供了解析配置節(jié)并返回鍵值對的功能,其中鍵和值都是字符串類型。通過使用 NameValueSectionHandler,可以方便地讀取和解析配置文件中的特定配置節(jié),并將其作為鍵值對的集合在應用程序中使用。
要使用 NameValueSectionHandler,需要在配置文件中定義一個自定義節(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é),并將其轉換為 NameValueCollection 對象。然后,通過鍵(Key)來獲取相應的值(Value)。
需要注意的是,System.Configuration.NameValueSectionHandler 在 .NET Framework 4.0 及更高版本中已經(jīng)被廢棄,推薦使用更現(xiàn)代化的配置方式,例如使用自定義配置節(jié)和自定義配置節(jié)處理程序(Section Handler)來替代。
以上就是c#配置文件中自定義塊節(jié)點的方法的詳細內容,更多關于c#配置自定義塊節(jié)點的資料請關注腳本之家其它相關文章!
相關文章
C#中Convert.ToInt32()和int.Parse()的區(qū)別介紹
Convert是一個類,繼承自system.Object;int是值類型,在本文為大家詳細介紹下它與int.Parse()的區(qū)別,感興趣的朋友可以參考下2013-10-10

