以前还真没见过,今天看项目中有在用,简单写了个Demo,这样配置的好处就是可以自定义配置,更加模块化,直接上代码;
1.配置文件
由于我创建的是一个控制台项目,所以配置文件是App.Config:(这里面遇到的一个坑是,自定义配置一定要放在<startup>配置节点之前,否则无法正常运行。)
<?xml version="1.0" encoding="utf-8" ?> <configuration> <!--自定义配置节点--> <configSections> <sectionGroup name="ymconfig"> <section name="ym1" type="System.Configuration.NameValueSectionHandler"/> <section name="ym2" type="System.Configuration.NameValueSectionHandler"/> </sectionGroup> <section name="ryjconfig" type="System.Configuration.NameValueSectionHandler" /> </configSections> <ryjconfig> <add key="name1" value="value1"/> <add key="name2" value="value2"/> </ryjconfig> <ymconfig> <ym1> <add key="yiming1" value="一明1"/> <add key="yiming2" value="一明2"/> </ym1> <ym2> <add key="yiming3" value="一明3"/> </ym2> </ymconfig> <!--自定义配置节点结束--> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> </configuration>
2.获取配置文件值
using System; using System.Collections.Specialized; using System.Configuration; namespace 学习测试 { class Program { static NameValueCollection ryjConfig = ConfigurationManager.GetSection("ryjconfig") as NameValueCollection; static NameValueCollection ymConfig = ConfigurationManager.GetSection("ymconfig/ym1") as NameValueCollection; static void Main(string[] args) { string name1 = ryjConfig["name1"]; string name2 = ryjConfig["name2"]; string ryj1 = ymConfig["yiming1"]; string ryj2 = ymConfig["yiming2"]; Console.WriteLine(name1 + ":" + name2); Console.WriteLine(ryj1+":"+ryj2); Console.WriteLine("zj...."); Console.ReadKey(); } } }