C#中读写自定义的web 配置文件

开发程序的过程中,有时候我们需要自己编写一个config文件,比如取名App.config, 然后写一些配置信息在里面。然后我们需要编写C#代码来对这个配置文件进行读写

比如:App.Config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="mySection" type="test.MySection, test"/>
  </configSections>
  <mySection>
    <add key="user1" value="aaa111" />
    <add key="user2" value="bbb111" />
  </mySection>
</configuration>

可以看出在这个配置文件中,我们自己定义了一个section => mySection,这里自定义的section都需要从ConfigurationSection中继承, 所以我们写一个MySection类,从ConfigurationSection中继承

using System;using System.Configuration;

public class MySection : ConfigurationSection    // 所有配置节点都要选择这个基类
{
        private static ConfigurationProperty s_property = new ConfigurationProperty(string.Empty, typeof(MyKeyValueCollection), null, ConfigurationPropertyOptions.IsDefaultCollection);

        [ConfigurationProperty("", Options = ConfigurationPropertyOptions.IsDefaultCollection)]
        public MyKeyValueCollection KeyValues {
            get {
                return (MyKeyValueCollection)base[s_property];
            }
        }
        [ConfigurationCollection(typeof(MyKeyValueSetting))]
        public class MyKeyValueCollection : ConfigurationElementCollection        // 自定义一个集合
        {
            // 基本上,所有的方法都只要简单地调用基类的实现就可以了。
            public MyKeyValueCollection()
                : base(StringComparer.OrdinalIgnoreCase)    // 忽略大小写
            {

            }

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

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

            protected override object GetElementKey(ConfigurationElement element) {
                return ((MyKeyValueSetting)element).Key;
            }

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

            public void Clear() {
                base.BaseClear();
            }

            public void Remove(string name) {
                base.BaseRemove(name);
            }
        }
        public class MyKeyValueSetting : ConfigurationElement    // 集合中的每个元素
        {

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

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

    }

原文地址:https://www.cnblogs.com/wphl-27/p/9261499.html

时间: 2024-10-21 01:30:12

C#中读写自定义的web 配置文件的相关文章

在.net中读写config文件的各种方法(自定义config节点)

http://www.cnblogs.com/fish-li/archive/2011/12/18/2292037.html 阅读目录 开始 config文件 - 自定义配置节点 config文件 - Property config文件 - Element config文件 - CDATA config文件 - Collection config文件 - 读与写 读写 .net framework中已经定义的节点 xml配置文件 xml配置文件 - CDATA xml文件读写注意事项 配置参数的

重新想象 Windows 8.1 Store Apps (90) - 通信的新特性: 通过 HttpBaseProtocolFilter 实现 http 请求的缓存控制,以及 cookie 读写; 自定义 HttpFilter; 其他

[源码下载] 作者:webabcd 介绍重新想象 Windows 8.1 Store Apps 之通信的新特性 通过 HttpBaseProtocolFilter 控制缓存逻辑,以及如何通过 HttpBaseProtocolFilter 管理 cookie 自定义 HttpFilter 其他 示例HTTP 服务端WebServer/HttpDemo.aspx.cs /* * 用于响应 http 请求 */ using System; using System.IO; using System.T

自定义WCF的配置文件

原文地址:http://www.cnblogs.com/shanyou/archive/2008/12/02/1346298.html WCF的承载既可以通过编码实现,也能够通过配置实现.而且使用配置,更有利于日后的维护和扩展.我们经常会碰到这样的一个场景:需要把WCF的配置信息放在一个单独的文件中,这种情况经常出现在需要为自己开发的服务配置,需要采用独立的配置文件,而不是只能放到app.config/web.config中..NET提供了一种机制是通过ConfigSource.例如在asp.n

在ASP.NET MVC3项目中,自定义404错误页面

在Web开发中,用户体验是至关重要的,一个友好的网站自然少不了自定义404错误页面. 让笔者为大家介绍404错误页面在ASP.NET MVC3项目中的配置: 第一步,在项目的Web.config文件中找到节点<system.web> 在此节点下添加配置        <customErrors mode="On" defaultRedirect="~/Index/Error404">          <error statusCode

SharePoint中开发自定义Timer Job

 SharePoint中开发自定义Timer Job 1. Timer Job简介 在SharePoint中有一个服务SharePoint timer service(owstimer.exe),这个服务用来进行异步处理一些SharePoint的数据,创建web application等等,为了缓解站点w3wp.exe的压力,而且Timer 服务可以说是占据了SharePoint的半边天,没有他那么SharePoint将不能正常工作 2. Timer Job 作用 很多时候我们需要定期自动去处理

ASP.NET中处理自定义错误的最佳方式

原文:http://www.cnblogs.com/dudu/p/aspnet_custom_error.html 要在ASP.NET中处理好自定义错误(Custom Errors)首先要抛弃使用web.config\customErrors. <customErrors mode="RemoteOnly" defaultRedirect="/error/error.htm"> <error statusCode="404" r

在android中读写文件

在android中读写文件 android中只有一个盘,正斜杠/代表根目录. 我们常见的SDK的位置为:/mnt/sdcard 两种最常见的数据存储方式: 一.内存 二.本地 1.手机内部存储 2.外部存储设备(SD卡) 在SD卡中读数据是不需要权限的,但是在SD卡中写数据是要权限的: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 读写文件的方式就是用的Java的文件

Android系统在新进程中启动自定义服务过程(startService)的原理分析

在编写Android应用程序时,我们一般将一些计算型的逻辑放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验.Android系统为我们提供了一个Service类,我们可以实现一个以Service为基类的服务子类,在里面实现自己的计算型逻辑,然后在主进程通过startService函数来启动这个服务.在本文中,将详细分析主进程是如何通过startService函数来在新进程中启动自定义服务的. 在主进程调用startService函数时,会通过Binder进程间通信机制来

c#.net与vb.net中读写Cookie的方法!

Cookie (HttpCookie的实例)提供了一种在 Web 应用程序中存储用户特定信息的方法.例如,当用户访问您的站点时,您可以使用 Cookie 存储用户首选项或其他信息.当该用户再次访问您的网站时,应用程序便可以检索以前存储的信息. C#.net部分 创建Cookie方法 (1)Response.Cookies["userName"].Value = “admin";Response.Cookies[“userName”].Expires = DateTime.No