我们就接着上一篇继续说,上一篇中介绍了ConfigSection的结构和两个简单的DEMO,本篇就说一下SectionGroup、ConfigurationElementCollection和key/value pair configurationsection.

的使用。

1、SectionGroup的使用


下面的代码简单的说明一下SectionGroup的使用:

1)、首先定义一个继承ConfigurationSectionGroup的类:

   1:   /// <summary>
   2:   /// 自定义SectionGroup
   3:   /// </summary>
   4:      public class MySectionGroup:ConfigurationSectionGroup
   5:      {
   6:          [ConfigurationProperty("myBlog")]
   7:          public MySection MyBlog
   8:          {
   9:              get
  10:              {
  11:                  return (MySection)base.Sections["myBlog"];
  12:              }
  13:          }
  14:      }

2)、其次,在定义一个继承ConfigurationSection的Section:

   1:  /// <summary>
   2:      /// 自定义Section
   3:      /// </summary>
   4:      public class MySection:ConfigurationSection
   5:      {
   6:          [ConfigurationProperty("name")]
   7:          public string BlogName
   8:          {
   9:              get
  10:              {
  11:                  return (string)base["name"];
  12:              }
  13:          }
  14:          [ConfigurationProperty("url")]
  15:          public string BlogUrl
  16:          {
  17:              get
  18:              {
  19:                  return (string)base["url"];
  20:              }
  21:          }
  22:      }

下面再讨论一下怎么在web.config中如何配置和使用:

web.config中的配置:

   1:  <configSections>
   2:          <sectionGroup name="myBlogs" type="KevinDiao.MySectionDemo01.MySectionGroup,KevinDiao.MySectionDemo01">
   3:              <section name="myBlog" type="KevinDiao.MySectionDemo01.MySection,KevinDiao.MySectionDemo01"/>
   4:          </sectionGroup>
   5:  </configSections>
   6:   
   7:  <myBlogs>
   8:      <myBlog name="五香瓜子" url="http://www.cnblogs.com/diaojia/"></myBlog>
   9:  </myBlogs>

读取web.config中配置:

   1:   MySection mySection = ConfigurationManager.GetSection("myBlogs/myBlog") as MySection;
   2:   Response.Write("博客名称:" + mySection.BlogName + "<br/>");
   3:  Response.Write("博客地址:<a href='" + mySection.BlogUrl + "'>" + mySection.BlogUrl + "</a>");

运行得到的结果:

博客名称:五香瓜子
博客地址:http://www.cnblogs.com/diaojia/ 
 

2、ConfigurationElementCollection的使用


下面再来讨论一下怎么在ConfigSections中配置自定义集合,我们还是用代码说明吧。

1)、 首先定义一个继承ConfigurationElement的类。

   1:      /// <summary>
   2:      /// 自定义Element
   3:      /// </summary>
   4:      public class MyBlogElement:ConfigurationElement
   5:      {
   6:          [ConfigurationProperty("name")]
   7:          public string Name
   8:          {
   9:              get
  10:              {
  11:                  return (string)base["name"];
  12:              }
  13:          }
  14:          [ConfigurationProperty("url")]
  15:          public string Url
  16:          {
  17:              get
  18:              {
  19:                  return (string)base["url"];
  20:              }
  21:          }
  22:      }

它主要包含要配置的主要内容。

2)、其次定义一个继承ConfigurationElementCollection的类

   1:      /// <summary>
   2:      /// 自定义ElementCollection
   3:      /// </summary>
   4:      public class MyBlogElementCollection:ConfigurationElementCollection
   5:      {
   6:          protected override ConfigurationElement CreateNewElement()
   7:          {
   8:              return new MyBlogElement();
   9:          }
  10:          protected override object GetElementKey(ConfigurationElement element)
  11:          {
  12:              return ((MyBlogElement)element).Name;
  13:          }
  14:          public override ConfigurationElementCollectionType CollectionType
  15:          {
  16:              get
  17:              {
  18:                  return ConfigurationElementCollectionType.BasicMap;
  19:              }
  20:          }
  21:   
  22:          protected override string ElementName
  23:          {
  24:              get
  25:              {
  26:                  return "myBlog";
  27:              }
  28:          }
  29:          public MyBlogElement this[int index]
  30:          {
  31:              get
  32:              {
  33:                  return (MyBlogElement)BaseGet(index);
  34:              }
  35:              set
  36:              {
  37:                  if (BaseGet(index) != null)
  38:                  {
  39:                      BaseRemoveAt(index);
  40:                  }
  41:                  BaseAdd(index, this);
  42:              }
  43:          }
  44:      }

3)、再次定义一个继承ConfigurationSection的类

   1:      /// <summary>
   2:      /// 自定义Section 
   3:      /// </summary>
   4:      public class MyBlogSection:ConfigurationSection
   5:      {
   6:          [ConfigurationProperty("name")]
   7:          public string Name
   8:          {
   9:              get
  10:              {
  11:                  return (string)base["name"];
  12:              }
  13:          }
  14:          [ConfigurationProperty("",IsDefaultCollection=true)]
  15:          public MyBlogElementCollection MyBlogCollection
  16:          {
  17:              get
  18:              {
  19:                  return (MyBlogElementCollection)base[""];
  20:              }
  21:          }
  22:   
  23:      }

下面在看看怎么在web.config中如何配置:

   1:  <configSections>
   2:  <section name ="MyBlogs"  type="KevinDiao.MySectionDemo02.MyBlogSection,KevinDiao.MySectionDemo02"/>
   3:  </configSections>
   4:   <MyBlogs name="KevinDiao">
   5:      <myBlog name="五香瓜子" url="http://www.cnblogs.com/diaojia/"></myBlog>
   6:      <myBlog name="业精于勤" url="http://diaojia.blog.51cto.com/"></myBlog>
   7:    </MyBlogs>

再看看怎么读取:

   1:   MyBlogSection mySection = ConfigurationManager.GetSection("MyBlogs") as MyBlogSection;
   2:   foreach (MyBlogElement item in mySection.MyBlogCollection)
   3:    {
   4:         Response.Write("博客名称:" + item.Name + "<br/>");
   5:         Response.Write("博客地址:<a href='" + item.Url + "'>" + item.Url + "</a>" + "<br/>");
   6:         Response.Write("-----------------------------------------------------------------<br/>");
   7:     }

最后在看看运行的结果:

博客名称:五香瓜子
博客地址:http://www.cnblogs.com/diaojia/
-----------------------------------------------------------------
博客名称:业精于勤
博客地址:http://diaojia.blog.51cto.com/
-----------------------------------------------------------------

3、key/value pair configurationsection的使用(例如:appSettings)


最后在简单的说明一下在web.config中怎么使用key/value pair configurationsection。

1)、首先定义一个继承ConfigurationElement的类

   1:      /// <summary>
   2:      /// 自定义ConfigurationElement
   3:      /// </summary>
   4:      public class MyBlogElement: ConfigurationElement
   5:      {
   6:          [ConfigurationProperty("name")]
   7:          public string Name
   8:          {
   9:              get
  10:              {
  11:                  return (string)base["name"];
  12:              }
  13:          }
  14:          [ConfigurationProperty("url")]
  15:          public string Url
  16:          {
  17:              get
  18:              {
  19:                  return (string)base["url"];
  20:              }
  21:          }       
  22:      }

其实和在2、ConfigurationElementCollection的使用中的差不多。

2)、其次在定义一个继承ConfigurationElementCollection的类:

   1:      /// <summary>
   2:      /// 自定义ConfigurationElementCollection
   3:      /// </summary>
   4:      public class MyBlogsElectionCollection:ConfigurationElementCollection
   5:      {
   6:          protected override ConfigurationElement CreateNewElement()
   7:          {
   8:              return new MyBlogElement();
   9:          }
  10:   
  11:          protected override object GetElementKey(ConfigurationElement element)
  12:          {
  13:              return ((MyBlogElement)element).Name;
  14:          }
  15:      }

3)、再次就是定义一个继承ConfigurationSection的类

   1:      /// <summary>
   2:      /// 自定义Section
   3:      /// </summary>
   4:      public class MyBlogsSection : ConfigurationSection
   5:      {
   6:          [ConfigurationProperty("name")]
   7:          public string Name
   8:          {
   9:              get
  10:              {
  11:                  return (string)base["name"];
  12:              }
  13:          }
  14:          [ConfigurationProperty("",IsDefaultCollection=true)]
  15:          public MyBlogsElectionCollection MyBlogs
  16:          {
  17:              get 
  18:              {
  19:                  return (MyBlogsElectionCollection)base[""];
  20:              }
  21:          }
  22:      }

下面在看看怎么在web.config中如何配置:

   1:  <configSections>
   2:   <section name="MyBlogs" type="KevinDiao.MySectionDemo03.MyBlogsSection,KevinDiao.MySectionDemo03"/>
   3:  </configSections>
   4:   <MyBlogs name="KevinDiao">
   5:      <add name="五香瓜子" url="http://www.cnblogs.com/diaojia/"></add>
   6:      <add name="业精于勤" url="http://diaojia.blog.51cto.com/"></add>
   7:   </MyBlogs>

再看看怎么读取:

   1:   MyBlogsSection mySection = ConfigurationManager.GetSection("MyBlogs") as MyBlogsSection;
   2:    foreach (MyBlogElement item in mySection.MyBlogs)
   3:    {
   4:        Response.Write("博客名称:" + item.Name + "<br/>");
   5:        Response.Write("博客地址:<a href='" + item.Url + "'>" + item.Url + "</a>" + "<br/>");
   6:        Response.Write("-----------------------------------------------------------------<br/>");
   7:    }

最后在看看运行的结果:

博客名称:五香瓜子
博客地址:http://www.cnblogs.com/diaojia/
-----------------------------------------------------------------
博客名称:业精于勤
博客地址:http://diaojia.blog.51cto.com/
-----------------------------------------------------------------
 
 

最后在附上本篇的代码:DEMO

REFERENCE FROM : http://www.cnblogs.com/diaojia/archive/2011/04/06/2007350.html

参考:

MSDN

ASP.NET杂谈-一切都从web.config说起(2)(ConfigSections详解-中)的更多相关文章

  1. ASP.NET杂谈-一切都从web.config说起(2)(ConfigSections详解-上 )

    ConfigSections的结构 首先我们先回顾一下ConfigSections的结构和它子节点的说明,如下: 1: <configSections> 2: <sectionGro ...

  2. ASP.NET杂谈-一切都从web.config说起(2)(ConfigSections详解-下)

    还是接着上一篇说起,在上两篇中主要和大家探讨了ConfigSection的几种常用形式,并举例几个例子说明了一下.其实它们主要都是继承System.Configuration.Configuratio ...

  3. asp.net夜话之十一:web.config详解

    转:http://blog.csdn.net/zhoufoxcn/article/details/3265141 在开发中经常会遇到这样的情况,在部署程序时为了保密起见并不将源代码随项目一同发布,而我 ...

  4. 10 Things ASP.NET Developers Should Know About Web.config Inheritance and Overrides(转)

    10 Things ASP.NET Developers Should Know About Web.config Inheritance and Overrides Wednesday, Janua ...

  5. WCF项目问题2-无法激活服务,因为它需要 ASP.NET 兼容性。没有未此应用程序启用 ASP.NET 兼容性。请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值。

    无法激活服务,因为它需要 ASP.NET 兼容性.没有未此应用程序启用 ASP.NET 兼容性.请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibility ...

  6. HTTP 错误 500.19 – Internal Server Error web.config 文件的 system.webServer/httpErrors 节中不允许绝对物理路径“C:\inetpub\custerr”[转]

    给ASP或者ASP.NET等需要配置IIS服务器的过程中,很可能会遇到以下两种错误.尤其是用Win7系统的,配置IIS7.0版本比用XP系统配置IIS5.1版本而言要复杂复杂一些.当同时需要配置ASP ...

  7. SAE上传web应用(包括使用数据库)教程详解及问题解惑

    转自:http://blog.csdn.net/baiyuliang2013/article/details/24725995 SAE上传web应用(包括使用数据库)教程详解及问题解惑: 最近由于工作 ...

  8. ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解

    原文 ASP.NET MVC 5 学习教程:Edit方法和Edit视图详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 ...

  9. 【译】ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解

    原文:[译]ASP.NET MVC 5 教程 - 7:Edit方法和Edit视图详解 在本节中,我们继续研究生成的Edit方法和视图.但在研究之前,我们先将 release date 弄得好看一点.打 ...

随机推荐

  1. MMORPG大型游戏设计与开发(part6 of net)

    上一部分,讲述了一个服务器与服务器之间的通信实例,客户端其实原理大同小异.网络部分准备就暂时讲到这里,不过我们不妨再回头过来想想在这过程中有没有优化和改进的地方.这部分讲解的是以网络包代码作分析,实现 ...

  2. [Copy]Bird's booklist

    Copy from Bird Thanks! Here is his website: Bird's book list 0x01 编程语言 Python基础教程(第2版) Effective Jav ...

  3. Markdown learning

    For details, please refer to Markdown # Markdown Learning #h1 ##h2 ###h3 ####h4 **Bond** *italic* Th ...

  4. vlan协议及端口类型

    一.VLAN协议 1.协议的应用 802.1Q协议,即Virtual Bridged Local Area Networks协议,主要规定了VLAN的实现. 2.协议结构 每一个支持802.1Q协议的 ...

  5. Unity3D所使用的第三方工具

    前言 最近在研究Unity3D的结构和原理.关于Unity3D怎么用之类的教程在网上一找一大堆,想看教程之类的就不用看这篇文章了.我想做的是从使用Unity3D所看到的表象(表),摸透其设计原则和组织 ...

  6. LFI漏洞利用总结

    主要涉及到的函数 include(),require().include_once(),require_once() magic_quotes_gpc().allow_url_fopen().allo ...

  7. zlog学习笔记(mdc)

    mdc.h #ifndef __zlog_mdc_h #define __zlog_mdc_h #include "zc_defs.h" typedef struct zlog_m ...

  8. 根据Unicode编码用C#语言把它转换成汉字的代码

    rt 根据所具有的Unicode编码用C#语言把它转换成汉字的代码 var s = System.Web.HttpUtility.HtmlDecode(Utf8Str); var o = Newton ...

  9. 借个例子说明sed的模式空间,以及针对模式空间的N,P,D用法

    下面是我们要处理的文本:题目要求是把所有散列在不同行的同一个中括号中的数据集中在一起, 见下表就秒懂了吧 处理前的文本 处理后的文本 [123456][ASDEF][ABCD123WF][789ADC ...

  10. MVC控制器总结

    1.特性 [AuthorizeFilter]  用于权限过滤 [HttpGet] [HttpPost] 2.参数 获取方法 public ActionResult void Get(int id){} ...