C#自定義配置文件教程,C#App.Config自定義配置文件教程,C#web.Config自定義配置節點 ...
C#自定義配置文件
.NET程式中,經常使用Config文件來配置應用程式中經常使用的值,比如資料庫連接字元串。最近項目遇到一個需要配置好多節點在配置文件中的需求。為了使配置節點整潔易維護,在代碼調用時也保證獲取時比較直觀,結合自定義配置文件專門整理了一個配置文件幫助類Demo。此篇文章主要講述自定義配置文件的使用方法。
常見配置文件使用方法
- 直接在connectionStrings\appSettings這兩個節點中添加add節點配置
- 這種方式在項目中很常見,使用簡單,這裡不做介紹
- 文件操作
- 很多程式中(自己公司老項目),通過獲取指定路徑下XML\ini\json\txt等文件,通過IO獲取文件內容並對文件進行解析,從而獲取程式需要的配置信息(不推薦)
自定義配置文件
在App.Config(web.config)中指定其他配置文件的路徑和節點。
在configSections節點下配置section節點,.NET提供自帶的類型進行封裝。(NameValue鍵值對、Dictionary字典、SingTag基礎結構)。Section節點的name屬性是自定義節點的名稱,type是接收信息的數據類型。
註意!configSections節點必須為configuration下第一個節點
configSections的name屬性為自定義配置節點的名稱,type 為轉換的類型
ConfigurationManager.GetSection("name")
方法的參數是自定義配置文件節點的名稱
NameValue鍵值對
配置語法格式:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!--以NameValueCollection鍵值對的形式返回配置節點中的信息,type值固定為System.Configuration.NameValueSectionHandler-->
<section name="NameValueConfigNode" type="System.Configuration.NameValueSectionHandler"/>
</configSections>
<!--自定義配置節點-->
<NameValueConfigNode>
<add key="Name一" value="Value一" />
<add key="Name二" value="Value二" />
<add key="Name三" value="Value三" />
</NameValueConfigNode>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>
調用方法:這裡以一個靜態屬性的方法獲取並返回Dictionary格式(後面幾種方法也採用這個方式)
/// <summary>
/// NameValueCollection
/// </summary>
public static Dictionary<string, string> NameValueConfigNode
{
get
{
NameValueCollection nvc = (NameValueCollection)ConfigurationManager.GetSection("NameValueConfigNode");
Dictionary<string, string> result = new Dictionary<string,string>();
foreach (string key in nvc.AllKeys)
{
result.Add(key, nvc[key]);
}
return result;
}
}
Dictionary
配置文件語法格式:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!--以Dictionary字典的形式返回配置節點中的信息,type固定為System.Configuration.DictionarySectionHandler-->
<section name="DictionaryConfigNode" type="System.Configuration.DictionarySectionHandler"/>
</configSections>
<!--自定義配置節點-->
<DictionaryConfigNode>
<add key="Key一" value="DictValue一" />
<add key="Key二" value="DictValue二" />
<add key="Key三" value="DictValue三" />
</DictionaryConfigNode>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>
調用方法:
/// <summary>
/// Dictionary
/// </summary>
public static Dictionary<string, string> DictionaryConfigNode
{
get
{
IDictionary dict = (IDictionary)ConfigurationManager.GetSection("DictionaryConfigNode");
Dictionary<string, string> result = new Dictionary<string, string>();
foreach (string key in dict.Keys)
{
result.Add(key, dict[key].ToString());
}
return result;
}
}
SingTag
配置文件語法格式:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!--基礎結構處理 .config 文件中由單個 XML 標記所表示的各配置節點中的值,type固定為System.Configuration.SingleTagSectionHandler-->
<section name="SingleTagConfigNode" type="System.Configuration.SingleTagSectionHandler" />
</configSections>
<!--自定義配置節點-->
<!--註意,只能是單個節SingleTagSectionHandler才能處理,無論有多少個屬性都能處理-->
<SingleTagConfigNode PropertyOne="1" PropertyTwo="2" PropertyThree="3" PropertyFour="4" PropertyFive="5" />
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>
調用方法:
/// <summary>
/// SingleTag
/// </summary>
public static Dictionary<string, string> SingleTagConfigNode
{
get
{
Hashtable dict = (Hashtable)ConfigurationManager.GetSection("SingleTagConfigNode");
Dictionary<string, string> result = new Dictionary<string, string>();
foreach (string key in dict.Keys)
{
result.Add(key, dict[key].ToString());
}
return result;
}
}
以上程式通過控制台應用程式測試調用效果如下:
自定義配置文件
以上三種方法,只能讀取應用程式的Web.config或者app.config中的配置信息,但是在大多數項目中,業務場景複雜,配置信息更是多到看不過來,所以如果都寫在web.config或者app.config中的話,不太美觀,也不易維護。
那麼有沒有一種方法,可以根據需要,配置一個或者多個的config,並且在程式中直接調用使用的方法? (問就是有^_^)
下麵舉例一種自定義配置文件的寫法
配置文件寫法:
<configSections>節點下<section>的屬性值內容與上面三個方法相同。需要註意的是自定義節點,自定義節點只需要設置configSource屬性即可,屬性值指向自定義配置文件的路徑;
註意:路徑必須要寫成相對路徑。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<!--把MyConfigData節點的數據映射到MyConfigData類中-->
<section name="MyConfigData" type="ConsoleApplication.ConfigFiles.ConfigFile,ConsoleApplication"/>
</configSections>
<!--自定義配置節點,configSource指定自定義配置文件的路徑(必須是相對路徑)-->
<MyConfigData configSource="ConfigFiles\Framework.config"/>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>
這是自定義的文件內容,
<?xml version="1.0" encoding="utf-8" ?>
<MyConfigData>
<add key="Key一" value="自定義文件一" />
<add key="Key二" value="自定義文件二" />
<add key="Key三" value="自定義文件三" />
</MyConfigData>
程式中的調用方法與上面的方式一致,這種自定義配置文件的精髓在於,不用將所有配置信息都擠在一個文件中,而是根據項目需要合理的分成多個配置,只需要在web.config或者app.config中指定文件路徑即可。其他使用方法沒有差別
自定義結構配置文件
以上方法為常用的基本配置文件的使用方法,都是使用C#提供的類型進行獲取,配置文件的節點需要按照對應格式設置,C#中還有一種可以自定義配置文件格式的調用方法,Config中科自定義節點的結構,然後在程式中需要自定義一個配置文件的類,用於接收自定義配置文件的內容;
其中使用到的類型:
ConfigurationSection、ConfigurationElementCollection、ConfigurationElement、ConfigurationProperty
上面介紹的幾種方法基本上已經足夠日常使用,此篇文章不在進行介紹自定義格式的寫法,後期會根據個人情況(是否懶惰的情況),可能會補充此部分功能,有興趣可以去瞭解一下。
寫在最後
以上源代碼已經放在Gitee上,可自行下載,
https://gitee.com/yang-yong-666/csharp
該項目還包含其他關於C#的幫助類,並且會持續更新!
個人交流QQ:1695690324
原創不易,轉載請註明出處
博客園:https://www.cnblogs.com/yangyongdashen-S/
CSDN:https://blog.csdn.net/weixin_44312699?spm=1010.2135.3001.5343
Gitee:https://gitee.com/yang-yong-666
公眾號:yi人夕岸