zoukankan      html  css  js  c++  java
  • c# 配置文件之configSections配置(二)

    在很多时候我们需要自定义我们自己的自定义App.config 文件,而微软为我们提供了默认的

    System.Configuration.DictionarySectionHandler

    System.Configuration.NameValueSectionHandler      

    System.Configuration.SingleTagSectionHandler

    DictionarySectionHandler使用

      DictionarySectionHandler的工作方式与NameValueFileSectionHandler几乎相同,其区别是DictionarySectionHandler返回HashTable对象,而后者返回的是NameValueCollection。

    1 <configSections>
    2   <section name="mailServer" type="System.Configuration.DictionarySectionHandler,System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    3 </configSections>
    4 <mailServer>
    5   <add key="url" value="mail.163.com"/>
    6   <add key="username" value="admin"/>
    7   <add key="password" value="123456"/>
    8 </mailServer>

      使用代码

    1 IDictionary dic = ConfigurationManager.GetSection("mailServer") as IDictionary; 
    2 Console.WriteLine(dic);
    3 foreach (var key in dic.Keys)
    4 {
    5     Console.WriteLine("{0}:{1}", key, dic[key]);
    6 }
    7 Console.ReadKey();

    由于DictionarySectionHandler返回的是HashTable对象,而HashTable中的Key是唯一的。那么DictionarySectionHandler如果配置了相同的Key,后面的值会覆盖前面的值。

    还是上面的的例子,我们将配置文件修改一下

    1 <mailServer>
    2   <add key="url" value="mail.163.com"/>
    3   <add key="username" value="admin"/>
    4   <add key="password" value="123456"/>
    5   <add key="password" value="12345678"/>
    6 </mailServer>

    接下来看看输出结果:

    NameValueSectionHandler使用

      xml配置

    1 <configSections>
    2   <section name="mailServer" type="System.Configuration.NameValueSectionHandler,System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    3 </configSections>
    4 <mailServer>
    5   <add key="url" value="mail.163.com"/>
    6   <add key="username" value="admin"/>
    7   <add key="password" value="123456"/>
    8   <add key="password" value="12345678"/>
    9 </mailServer>

      代码:

    1 NameValueCollection mailServer = ConfigurationManager.GetSection("mailServer") as NameValueCollection;
    2 Console.WriteLine(mailServer);
    3 foreach (var key in mailServer.AllKeys)
    4 {
    5     Console.WriteLine("{0}:{1}",key,mailServer[key]);
    6 }
    7 Console.ReadKey();

      输出结果:

    SingleTagSectionHandler使用

      SingleTagSectionHandler和DictionarySectionHandler一样,同样返回的是Hashtable对象,只是书写结构不一样。

      xml配置:

    1 <configSections>
    2   <section name="mailServer" type="System.Configuration.SingleTagSectionHandler,System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    3 </configSections>
    4 <mailServer url="mail.163.com" username="admin" password="12345678"/>

      代码:

    1 IDictionary mailServer = ConfigurationManager.GetSection("mailServer") as Hashtable ;
    2 Console.WriteLine(mailServer);
    3 foreach (var key in mailServer.Keys)
    4 {
    5     Console.WriteLine("{0}:{1}", key, mailServer[key]);
    6 }    
    7  Console.ReadKey();

      输出结果:

  • 相关阅读:
    还是解决不了滚动条的缩放问题
    全屏问题的解决
    eclipse自带内存监视及回收插件Hidden Heap Status
    Apache2.2“the requested operation has failed”解决方法
    开源软件推介(三)
    Warning: mysql_connect() [function.mysqlconnect]: [2002] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试 (trying to connect via tcp://localhost:3306)
    pdf阅读器新需求
    学Linq to sql(十):分层构架的例子(四)
    告别ASP.NET操作EXCEL的烦恼(总结篇)——放到首页奢侈下
    Linq to sql(十):分层构架的例子(二)
  • 原文地址:https://www.cnblogs.com/caoyc/p/6000694.html
Copyright © 2011-2022 走看看