基础知识---应用程序配置文件(将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         }

你可能感兴趣的:(配置文件)