zoukankan      html  css  js  c++  java
  • 基础知识应用程序配置文件(将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         }
  • 相关阅读:
    uva 11404 Palindromic Subsequence(LCS回文串,最小字典序)
    paip.输入法编程---输入法ATIaN历史记录 v8b
    uva 10859 Placing Lampposts (树形dp)
    【设计模式】学习笔记8:命令模式
    Android自定义ProgressDialog
    (二十四)解释器模式详解
    Hadoop--两个简单的MapReduce程序
    BMP图像的灰度化---C++实现
    android 数组数据绑定到listview
    Win64 驱动内核编程-10.突破WIN7的PatchGuard
  • 原文地址:https://www.cnblogs.com/prolove2/p/2471174.html
Copyright © 2011-2022 走看看