我们就接着上一篇继续说,上一篇中介绍了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. 应用程序Cache对象到高性能Memcached学习之路

    来源:微信公众号CodeL 以下是个人学习之路的简单分享,不足之处欢迎大神们批评指正! 在网站开发的初期,我们没有考虑更多的东西,也没有对缓存进行系统的设计,而是直接使用了应用程序缓存对象Cache, ...

  2. POJ2157Maze[DFS !]

    Maze Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3818   Accepted: 1208 Description ...

  3. HDU3535AreYouBusy[混合背包 分组背包]

    AreYouBusy Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. USACO1.5Superprime Rid[附带关于素数算法时间测试]

    题目描述 农民约翰的母牛总是产生最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们.农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组 ...

  5. 在Flex4中嵌入字体

    如果要使用的字体不是系统字体,可以把字体嵌入到Flash中,然后引用该字体.不过字体文件一般都比较大,慎重使用该功能. 官方例子 http://help.adobe.com/en_US/flex/us ...

  6. HTML插入地图的方法

    方法/步骤 1.打开"百度地图生成器"的网址:http://api.map.baidu.com/lbsapi/creatmap/index.html 如下图: 2.在"1 ...

  7. virtual box使用

    1.工具栏菜单显示 用的是mac电脑.开始发现分辨率小,选了视图->全屏模式的菜单之后发现工具栏菜单不见了. 解决办法:用一个外置键盘,右ctrl+c进行恢复 virtualBox菜单栏和状态栏 ...

  8. python-数据类型补充及文件处理操作

    ___数据类型____ 一.列表的复制 浅复制和深复制 浅复制只复制一层,深复制完全克隆,慎用 1.实现浅复制的三种方式: name=['song','xiao','nan'] import copy ...

  9. docker中如何制作自己的基础镜像

    一.本地镜像 举个例子:现在把自己的开发环境打包,取名为centos6-base.tar,然后在docker中,以centos6-base.tar作为基准镜像. 1.创建自己的镜像,放置于/root目 ...

  10. Centos5.8 安装 ImageMagick 6.8.9-3

    下载最新的ImageMagick源码包 ImageMagick-6.8.9-3.x86_64.rpm 直接prm -ivh 安装提示错误 error: Failed dependencies: lib ...