博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中读写自定义的web 配置文件
阅读量:5233 次
发布时间:2019-06-14

本文共 3437 字,大约阅读时间需要 11 分钟。

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

比如:App.Config

可以看出在这个配置文件中,我们自己定义了一个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; }            }        }    }

 读取App.config file中的section

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);            var mySection = config.GetSection("mySection") as MySection;            foreach (MySection.MyKeyValueSetting add in mySection.KeyValues) {               Console.WriteLine(string.Format("{0}-{1}", add.Key, add.Value));            }

往App.config中写section

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);            var mySection = config.GetSection("mySection") as MySection;            mySection.KeyValues.Clear();            mySection.KeyValues.Add(new MySection.MyKeyValueSetting() { Key = "aaaaaa", Value = "ddddddd" });            config.Save();            ConfigurationManager.RefreshSection("mySection");  //刷新

 

转载于:https://www.cnblogs.com/wphl-27/p/9261499.html

你可能感兴趣的文章
20145206邹京儒Exp6 信息搜集与漏洞扫描
查看>>
webapi 获取json数据
查看>>
在win7下安装vc++6.0,vs2010及使用
查看>>
【Cocos2d-x for WP8 学习整理】(3)CCScrollView 实现捕鱼达人一样的场景选择界面...
查看>>
ubuntu下安装memcached和PHP的memcache扩展
查看>>
python之random模块
查看>>
UVaOJ 112道题目-算数与代数
查看>>
MySQL保存或更新 saveOrUpdate
查看>>
【Elasticsearch学习之一】Elasticsearch
查看>>
android 项目导入问题
查看>>
解决arcpy无法导入
查看>>
MongoDB windows基础配置及集群搭建
查看>>
Python基础学习总结(一)
查看>>
APP瘦身绝技(快速减少包大小)
查看>>
Linux学习(一)
查看>>
UVA1366-----Martian Mining------DP
查看>>
java学习笔记(5)——内部类
查看>>
2016年第9本:系统之美
查看>>
Flask_0x02 模板
查看>>
sublime text3 安装SublimeCodeIntel插件
查看>>