【转】ASP.NET杂谈-一切都从web.config说起(2)(ConfigSections详解-中)
我们就接着上一篇继续说,上一篇中介绍了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
参考:
==================================原文链接===此文章由博客转发小工具转发==================================
- 学习本是一个不断抄袭、模仿、练习、创新的过程。
- 虽然,园中已有本人无法超越的同主题博文,为什么还是要写。
- 对于自己,博文只是总结。在总结的过程发现问题,解决问题。
- 对于他人,在此过程如果还能附带帮助他人,那就再好不过了。
- 由于博主能力有限,文中可能存在描述不正确,欢迎指正、补充!
- 感谢您的阅读。如果文章对您有用,那么请轻轻点个赞,以资鼓励。
- 工控物联Q群:995475200