基础知识应用程序配置文件(将section转换成对象一)

System.Configuration.ConfigurationManager.GetSection方法,其作用是检索当前应用程序默认配置的指定配置节。

这是一个令人兴奋的方法,原因是,他的返回值是一个对象。他从应用程序配置文件中将指定的配置节的内容读取出来,为我们创建新的实例后映射到相应的属性。

看看这个简单的应用程序配置文件:

1 <?xml version="1.0" encoding="utf-8" ?>
2 <configuration>
3   <configSections>
4     <section name="ConfigurationOne" type="Configuration.UserInfo, Configuration"/>
5   </configSections>
6   <ConfigurationOne Handle="1" Name="Gene" />  
7</configuration>

section 中的type属性,指定了配置节转换的类型。 UserInfo需要实现一个叫作:IConfigurationSectionHandler的接口。如下代码所示:

 1     public class UserInfo : IConfigurationSectionHandler
 2     {
 3         public int Handle { getset; }
 4         public string Name { getset; }
 5 
 6         public object Create(object parent, object configContext, System.Xml.XmlNode section)
 7         {
 8             this.Handle = int.Parse(section.Attributes["Handle"].Value);
 9             this.Name = section.Attributes["Name"].Value;
10 
11             return this;
12         }
13     } 

 Create方法,是接口IConfigurationSectionHandler定义的,用于向当前实例填充数据。所有的数据都在section中。

通过以上两步,我们就可以在需要的时候调用 System.Configuration.ConfigurationManager.GetSection方法获取取UserInfo的对象。该方法的返回值,官方文档中建议强制转换为期望的配置类型。 并且为了避免可能出现的强制转换异常,需要使用条件强制转换运算,例如 C# 中的 as 运算符。如下代码所示:

 1         static void Main(string[] args)
 2         {
 3             UserInfo user = 
 4                 System.Configuration.ConfigurationManager.GetSection("ConfigurationOne"as UserInfo;
 5 
 6             if (user != null)
 7             {
 8                 Console.WriteLine(string.Format("UserInfo: Handle = {0}; Name = {1};",
 9                     user.Handle, user.Name));
10             }
11 
12             Console.ReadLine();
13         }
原文地址:https://www.cnblogs.com/prolove2/p/2471174.html