• 基础知识应用程序配置文件(将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         }
  • 相关阅读:
    实现一个简易版的react
    浅学virtualDom和diff算法
    148. 排序链表 归并排序 | 快速排序
    OC中的NSDictionary和NSMutableDictionary
    OC中的block
    OC中的category&Extension
    OC中判断方法是否实现
    OC的分组导航标记
    OC中程序的内存分布&类加载
    OC中的@property和@synthesize
  • 原文地址:https://www.cnblogs.com/prolove2/p/2471174.html
Copyright © 2020-2023  润新知