using System;
using System.Configuration;
namespace EncryptTool
{
/// <summary>
/// 用于XML操作
/// </summary>
public class ConfigurationHelper
{
//定义一个用于保存静态变量的实例
private static ConfigurationHelper instance = null;
//定义一个保证线程同步的标识
private static readonly object locker = new object();
//构造函数为私有,使外界不能创建该类的实例
private ConfigurationHelper() { }
public static ConfigurationHelper Instance
{
get
{
if (instance == null)
{
lock (locker)
{
if (instance == null) instance = new ConfigurationHelper();
}
}
return instance;
}
}
/// <summary>
/// 读取指定路径下Web.config,指定key的value
/// </summary>
/// <param name="filePath">路径</param>
/// <param name="key">key</param>
/// <returns></returns>
public string ReadConfiger(string filePath, string key)
{
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = filePath;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
string value = config.AppSettings.Settings[key].Value;
return value;
}
/// <summary>
/// 保存指定路径下Web.config,指定key的value
/// </summary>
/// <param name="filePath">路径</param>
/// <param name="key">key</param>
/// <param name="value">value</param>
/// <returns></returns>
public string SaveConfiger(string filePath, string key,string value)
{
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = filePath;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
//写入<add>元素的Value
config.AppSettings.Settings[key].Value = value;
//一定要记得保存,写不带参数的config.Save()也可以
config.Save();
//刷新,否则程序读取的还是之前的值(可能已装入内存)
ConfigurationManager.RefreshSection("appSettings");
return value;
}
/// <summary>
/// 根据key获取value
/// </summary>
/// <param name="key">key</param>
/// <returns></returns>
public string GetValueByKey(string key)
{
try
{
return ConfigurationManager.AppSettings[key];
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// 设置key对应value
/// </summary>
/// <param name="key">key</param>
/// <param name="value">value</param>
public void SetValueByKey(string key, string value)
{
try
{
//获取Configuration对象
Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//根据Key读取<add>元素的Value
//string name = config.AppSettings.Settings[key].Value;
//写入<add>元素的Value
config.AppSettings.Settings[key].Value = value;
//增加<add>元素
//config.AppSettings.Settings.Add("url", "//www.jb51.net");
//删除<add>元素
//config.AppSettings.Settings.Remove("name");
//一定要记得保存,写不带参数的config.Save()也可以
config.Save();
//刷新,否则程序读取的还是之前的值(可能已装入内存)
ConfigurationManager.RefreshSection("appSettings");
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
/// 判断appSettings中是否有此项
/// </summary>
private static bool AppSettingsKeyExists(string strKey, Configuration config)
{
foreach (string str in config.AppSettings.Settings.AllKeys)
{
if (str == strKey)
{
return true;
}
}
return false;
}
public static string configPath = AppContext.BaseDirectory + "app.config";
public static string GetConfig(string section)
{
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = configPath;
var config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
if (AppSettingsKeyExists(section, config))
{
return config.AppSettings.Settings[section].Value;
}
else return "";
}
}
}
博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!

浙公网安备 33010602011771号