
适用于app.config与web.config的ConfigUtil读写工具类
发布日期:2021-05-09 09:35:27
浏览次数:14
分类:博客文章
本文共 6969 字,大约阅读时间需要 23 分钟。
之前文章:《》,现在重新整理一个更完善的版本,增加批量读写以及指定配置文件路径,代码如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Configuration;using System.IO;namespace Zuowj.Utils{ ////// 配置工具类 /// Author:左文俊 /// Date:2018/1/27 public static class ConfigUtil { /// /// 获取管理配置文件对象Configuration /// /// 指定要管理的配置文件路径,如果为空或不存在,则管理程序集默认的配置文件路径 ///private static Configuration GetConfiguration(string configPath = null) { if (!string.IsNullOrEmpty(configPath) && File.Exists(configPath)) { ExeConfigurationFileMap map = new ExeConfigurationFileMap(); map.ExeConfigFilename = configPath; return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); } else { return ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); } } /// /// 获取指定配置文件+配置名称的配置项的值 /// public static string GetAppSettingValue(string key, string defaultValue = null, string configPath = null) { var config = GetConfiguration(configPath); var appSetting = config.AppSettings.Settings[key]; return appSetting.Value; } ////// 设置配置值(存在则更新,不存在则新增) /// public static void SetAppSettingValue(string key, string value, string configPath = null) { var config = GetConfiguration(configPath); var setting = config.AppSettings.Settings[key]; if (setting == null) { config.AppSettings.Settings.Add(key, value); } else { setting.Value = value; } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } ////// 删除配置值 /// public static void RemoveAppSetting(string key, string configPath = null) { var config = GetConfiguration(configPath); config.AppSettings.Settings.Remove(key); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } ////// 设置多个配置值(存在则更新,不存在则新增) /// public static void SetAppSettingValues(IEnumerable> settingValues, string configPath = null) { var config = GetConfiguration(configPath); foreach (var item in settingValues) { var setting = config.AppSettings.Settings[item.Key]; if (setting == null) { config.AppSettings.Settings.Add(item.Key, item.Value); } else { setting.Value = item.Value; } } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } /// /// 获取所有配置值 /// public static DictionaryGetAppSettingValues(string configPath = null) { Dictionary settingDic = new Dictionary (); var config = GetConfiguration(configPath); var settings = config.AppSettings.Settings; foreach (string key in settings.AllKeys) { settingDic[key] = settings[key].ToString(); } return settingDic; } /// /// 删除多个配置值 /// public static void RemoveAppSettings(string configPath = null, params string[] keys) { var config = GetConfiguration(configPath); if (keys != null) { foreach (string key in keys) { config.AppSettings.Settings.Remove(key); } } else { config.AppSettings.Settings.Clear(); } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } ////// 获取连接字符串 /// public static string GetConnectionString(string name, string defaultconnStr = null, string configPath = null) { var config = GetConfiguration(configPath); var connStrSettings = config.ConnectionStrings.ConnectionStrings[name]; if (connStrSettings == null) { return defaultconnStr; } return connStrSettings.ConnectionString; } ////// 获取指定配置文件+连接名称的连接字符串配置项 /// public static ConnectionStringSettings GetConnectionStringSetting(string name, string configPath = null) { var config = GetConfiguration(configPath); var connStrSettings = config.ConnectionStrings.ConnectionStrings[name]; return connStrSettings; } ////// 设置连接字符串的值(存在则更新,不存在则新增) /// public static void SetConnectionString(string name, string connstr, string provider, string configPath = null) { var config = GetConfiguration(configPath); ConnectionStringSettings connStrSettings = config.ConnectionStrings.ConnectionStrings[name]; if (connStrSettings != null) { connStrSettings.ConnectionString = connstr; connStrSettings.ProviderName = provider; } else { connStrSettings = new ConnectionStringSettings(name, connstr, provider); config.ConnectionStrings.ConnectionStrings.Add(connStrSettings); } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("connectionStrings"); } ////// 删除连接字符串配置项 /// public static void RemoveConnectionString(string name, string configPath = null) { var config = GetConfiguration(configPath); config.ConnectionStrings.ConnectionStrings.Remove(name); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("connectionStrings"); } ////// 获取所有的连接字符串配置项 /// public static DictionaryGetConnectionStringSettings(string configPath = null) { var config = GetConfiguration(configPath); var connStrSettingDic = new Dictionary (); var connStrSettings = ConfigurationManager.ConnectionStrings; foreach (ConnectionStringSettings item in connStrSettings) { connStrSettingDic[item.Name] = item; } return connStrSettingDic; } /// /// 设置多个连接字符串的值(存在则更新,不存在则新增) /// public static void SetConnectionStrings(IEnumerableconnStrSettings, string configPath = null) { var config = GetConfiguration(configPath); foreach (var item in connStrSettings) { ConnectionStringSettings connStrSetting = config.ConnectionStrings.ConnectionStrings[item.Name]; if (connStrSetting != null) { connStrSetting.ConnectionString = item.ConnectionString; connStrSetting.ProviderName = item.ProviderName; } else { config.ConnectionStrings.ConnectionStrings.Add(item); } } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("connectionStrings"); } /// /// 删除多个连接字符串配置项 /// public static void RemoveConnectionStrings(string configPath = null, params string[] names) { var config = GetConfiguration(configPath); if (names != null) { foreach (string name in names) { config.ConnectionStrings.ConnectionStrings.Remove(name); } } else { config.ConnectionStrings.ConnectionStrings.Clear(); } config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("connectionStrings"); } }}
发表评论
最新留言
不错!
[***.144.177.141]2025年04月14日 05时36分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
SpringBoot工程临时加一个分页的yml文件没有生效
2019-03-07
搭建的SpringMVC项目,404错误,确保代码正确的前提,可能是jar包没导进去
2019-03-07
flume使用中的一些常见错误解决办法 (地址已经使用)
2019-03-07
基于递归的全排列
2019-03-07
前端笔试题总结(三) - CSS篇
2019-03-07
C语言字符型、整型和变量的长度
2019-03-07
OpenCV camshift目标追踪
2019-03-07
Redis缓存穿透和缓存雪崩
2019-03-07
spring 的@ComponentScan 理解
2019-03-07
C++ e 神秘数组——vector
2019-03-07
day04_CSS选择器
2019-03-07
js 获取时间戳的方法
2019-03-07
C++ 底层语言的信仰-指针分类
2019-03-07
DFS
2019-03-07
概念模型向逻辑模型的转换
2019-03-07
python基础语法
2019-03-07
const修饰指针(常量指针与指针常量的区别)
2019-03-07
设计模式-创建型02-工厂模式-工厂方法模式01
2019-03-07