public class ConfigHelper
{
#region 日志记录
public static void Error(string contents)
{
Console.WriteLine(contents);
}
#endregion
/// <summary>
/// 判断是否是web程序
/// </summary>
/// <returns>
/// true: web
/// false: winform
/// </returns>
public static bool IsWebApp => HttpContext.Current != null;
/// <summary>
/// 判断键是否存在
/// </summary>
/// <param name="key">键名</param>
/// <returns>
/// true: 存在
/// false: 不存在
/// </returns>
public static bool HasKey(string key)
{
return IsWebApp
? WebConfigurationManager.AppSettings.AllKeys.Contains(key)
: ConfigurationManager.AppSettings.AllKeys.Contains(key);
}
/// <summary>
/// 获取键值
/// </summary>
/// <param name="key">键名</param>
/// <returns>键值</returns>
public static string GetKey(string key)
{
try
{
return IsWebApp
? WebConfigurationManager.AppSettings[key]
: ConfigurationManager.AppSettings[key];
}
catch (ConfigurationException e)
{
Error("GetKey error:" + e.Message);
return null;
}
}
/// <summary>
/// 获取键值
/// </summary>
/// <typeparam name="T">键值类型</typeparam>
/// <param name="parseFunc">转换方法</param>
/// <param name="key">键名</param>
/// <param name="defaultValue">默认键值</param>
/// <returns>键值</returns>
public static T GetKey<T>(Func<string, T> parseFunc, string key, T defaultValue = default(T))
{
try
{
var value = GetKey(key);
return !string.IsNullOrEmpty(value)
? parseFunc(value)
: defaultValue;
}
catch (ConfigurationException e)
{
Error("GetKey<T> error:" + e.Message);
return default(T);
}
}
/// <summary>
/// 设定键值
/// </summary>
/// <param name="key">键名</param>
/// <param name="value">键值</param>
/// <returns>
/// true: 设定成功
/// false: 设定失败
/// </returns>
public static bool SetKey(string key, object value)
{
try
{
var config = IsWebApp
? WebConfigurationManager.OpenWebConfiguration("~")
: ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var hasKey = config.AppSettings.Settings.AllKeys.Contains(key);
if (hasKey)
{
config.AppSettings.Settings[key].Value = value.ToString();
}
else
{
config.AppSettings.Settings.Add(key, value.ToString());
}
config.Save(ConfigurationSaveMode.Modified);
if (!IsWebApp) ConfigurationManager.RefreshSection("appSettings");
return true;
}
catch (Exception e)
{
Error("SetKey error:" + e.Message);
return false;
}
}
}