文档章节

C# 自定义config文件中的节点

iLinx
 iLinx
发布于 2015/08/28 11:59
字数 315
阅读 39
收藏 0
c#
    class ServerSection : ConfigurationSection
    {
        private static readonly ConfigurationProperty s_property
        = new ConfigurationProperty(string.Empty, typeof(MethodSectionCollection), null,
                                        ConfigurationPropertyOptions.IsDefaultCollection);

        [ConfigurationProperty("", Options = ConfigurationPropertyOptions.IsDefaultCollection)]
        public MethodSectionCollection KeyValues
        {
            get
            {
                return (MethodSectionCollection)base[s_property];
            }
        }
    }

    [ConfigurationCollection(typeof(MethodValueSetting))]
    public class MethodSectionCollection : ConfigurationElementCollection        // 自定义一个集合
    {
        // 基本上,所有的方法都只要简单地调用基类的实现就可以了。

        public MethodSectionCollection()
            : base(StringComparer.OrdinalIgnoreCase)    // 忽略大小写
        {
        }

        // 其实关键就是这个索引器。但它也是调用基类的实现,只是做下类型转就行了。
        new public MethodValueSetting this[string name]
        {
            get
            {
                return (MethodValueSetting)base.BaseGet(name);
            }
        }

        // 下面二个方法中抽象类中必须要实现的。
        protected override ConfigurationElement CreateNewElement()
        {
            return new MethodValueSetting();
        }
        protected override object GetElementKey(ConfigurationElement element)
        {
            return ((MethodValueSetting)element).Method;
        }

        // 说明:如果不需要在代码中修改集合,可以不实现Add, Clear, Remove
        public void Add(MethodValueSetting setting)
        {
            this.BaseAdd(setting);
        }
        public void Clear()
        {
            base.BaseClear();
        }
        public void Remove(string name)
        {
            base.BaseRemove(name);
        }
    }

    public class MethodValueSetting : ConfigurationElement    // 集合中的每个元素
    {
        [ConfigurationProperty("method", IsRequired = true)]
        public string Method
        {
            get { return this["method"].ToString(); }
            set { this["method"] = value; }
        }

        [ConfigurationProperty("url", IsRequired = true)]
        public string MethodUrl
        {
            get { return this["url"].ToString(); }
            set { this["url"] = value; }
        }
    }

配置文件中 Conf开头处添加:

    <configSections>
        <section name="自定义节点类名" type="命名空间.自定义节点类名, 命名空间"/>
    </configSections>

在程序中调用:

    MethodSection methodConfig = (MethodSection)System.Configuration.ConfigurationManager.GetSection("MethodSection");
    foreach(MethodValueSetting method in methodConfig.KeyValues)
    {
        MethodCollection.Add(method.Method, method.MethodUrl);
    }


© 著作权归作者所有

iLinx
粉丝 0
博文 25
码字总数 5479
作品 0
成都
程序员
私信 提问
.NET 配置文件:为什么这么做,存放在何处,如何使用?

介绍 至今我已经与 .NET 配置文件(.config文件)打交道了几年了。我想如果我提供一个对这些文件的快速入门会对大家有些帮助。 在本文章中,许多 C# 源码例子都假设你的项目已经引用了 Syst...

oschina
2013/07/05
5K
0
C#配置文件configSections详解

一、问题需求: 在项目中经常遇到需要写配置文件地方,目的就是不想在程序中关于一些信息写死,发布的时候只需要修改一下配置文件就可以,不需要每次都修改程序,如项目名称、数据库连接字符...

lxsh_wyan
05/07
0
0
ASP.Net页面刷新后自动滚动到原来位置

在网上搜索之后总结了三种方式: 1.设置Page中的MaintainScrollPositionOnPostback属性为true   A>.页面里有MaintainScrollPositionOnPostback,默认是false,设为true即可(页面级) <%@ P...

刘元兴
2017/05/18
0
0
如何:创建自定义 HTTP 模块

来源:MSDN 如何:创建自定义 HTTP 模块 本主题中描述的自定义 HTTP 模块阐释了 HTTP 模块的基本功能。在响应下面两个事件时调用该模块:BeginRequest 事件和 EndRequest 事件。这使该模...

夏春涛
2008/01/23
0
0
有关C#使用Enyim.Caching.dll的问题陆陆续续碰到

memcached的程序,陆陆续续碰到一些问题 用C++写过一些服务程序,也和memcached有关,用到的是网上的开源memcachedclient静态库。 按照当时系统的逻辑,memcached的读写,都是用C++完成,所以...

我的程序人生
2017/12/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
4
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
4
0
分页查询

一、配置 /*** @author beth* @data 2019-10-14 20:01*/@Configurationpublic class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor(){ ......

一个yuanbeth
昨天
6
0
在LINQPad中使用Ignite.NET

LINQPad是进行.NET开发的一款优秀工具,非常有利于Ignite.NET API的快速入门。 入门 下载LINQPad:linqpad.net/Download.aspx,注意要选择64位操作系统的AnyCPU版本; 安装Ignite.NET的NuGet...

李玉珏
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部