解决在Web.config或App.config中添加自定义配置的方法详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解决在Web.config或App.config中添加自定义配置的方法详解
本篇文章是对在Web.config或App.config中添加自定义配置的方法进行了详细的分析介绍,需要的朋友参考下
.Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持。最近看到一些项目中还在自定义xml文件做程序的配置,所以忍不住写一篇用系统自定义配置的随笔了。
如果你已经对自定义配置了如指掌,请忽略这篇文章。
言归正传,我们先来看一个最简单的自定义配置
type="ConfigExample.Configuration.SimpleSection,ConfigExample"/> 在配置文件中使用自定义配置,需要在configSections中添加一个section元素,并制定此section元素对应的类型和名字。然后再在configuration根节点下面添加此自定义配置,如上例中的simple节点。simple节点只有两个整形数的属性maxValue和minValue。 要在程序中使用自定义配置我们还需要实现存取这个配置块的类型,一般需要做如下三件事: 1. 定义类型从System.Configuration.ConfigurationSection继承 2. 定义配置类的属性,这些属性需要用ConfigurationProperty特性修饰,并制定属性在配置节中的名称和其他一些限制信息 3. 通过基类的string索引器实现属性的get ,set 非常简单和自然,如下是上面配置类的实现: public class SimpleSection:System.Configuration.ConfigurationSection { [ConfigurationProperty("maxValue",IsRequired=false,DefaultValue=Int32.MaxValue)] public int MaxValue { get { return(int)base["maxValue"]; } set { base["maxValue"] = value; } } [ConfigurationProperty("minValue",IsRequired=false,DefaultValue=1)] public int MinValue { get { return (int) base["minValue"];} set { base["minValue"] = value; } } [ConfigurationProperty("enabled",IsRequired=false,DefaultValue=true)] public bool Enable { get { return (bool)base["enabled"]; } set { base["enabled"] = value; } } } 这样子一个简单的配置类就完成了,怎么在程序中使用这个配置呢?需要使用ConfigurationManager类(要引用System.configuration.dll这个dll只有在.Net2.0之后的版本中才有)的GetSection方法获得配置就可以了。如下代码: SimpleSection simple = ConfigurationManager.GetSection("simple") as SimpleSection; Console.WriteLine("simple minValue={0} maxValue = {1}",simple.MinValue,simple.MaxValue); 这个配置类太过简陋了,可能有时候我们还需要更复杂的构造,比如在配置类中使用类表示一组数据,下面我们看一个稍微复杂一点的自定义配置 这个配置的名字是complex,他有一个属性height,他的节点内还有一个child元素这个元素有两个属性firstName和lastName;对于这个内嵌的节点该如何实现呢?首先我们需要定义一个类,要从ConfigurationElement类继承,然后再用和SimpleSection类似的方法定义一些用ConfigurationProperty特性修饰的属性就可以了,当然属性值的get,set也要使用基类的