ConfigHelper.cs

本文介绍了一个配置助手工具类,该工具类提供了用于处理应用程序配置的功能,包括判断当前应用类型(Web或WinForm)、检查配置键是否存在、获取配置键值、设置配置键值等方法,并附带了错误日志记录功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
		}
	}

}

 

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS0103 当前上下文中不存在名称“MainForm_DragDrop” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 74 活动 错误 CS0101 命名空间“AdvancedDatFileProcessor.Models”已经包含“ProcessingResult”的定义 Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\SettingsAppSettings.cs 6 活动 错误 CS0246 未能找到类型或命名空间名“InvalidDataException”(是否缺少 using 指令或程序集引用?) Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\DatProcessor.cs 26 活动 错误 CS0246 未能找到类型或命名空间名“InvalidDataException”(是否缺少 using 指令或程序集引用?) Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\DatProcessor.cs 31 活动 错误 CS0246 未能找到类型或命名空间名“InvalidDataException”(是否缺少 using 指令或程序集引用?) Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\DatProcessor.cs 38 活动 错误 CS0246 未能找到类型或命名空间名“ArgumentException”(是否缺少 using 指令或程序集引用?) Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\FileMonitorService.cs 42 活动 错误 CS0246 未能找到类型或命名空间名“InvalidOperationException”(是否缺少 using 指令或程序集引用?) Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\FileMonitorService.cs 56 活动 错误 CS0103 当前上下文中不存在名称“Worker_ProgressChanged” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 65 活动 错误 CS0103 当前上下文中不存在名称“Worker_RunWorkerCompleted” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 66 活动 错误 CS0103 当前上下文中不存在名称“MainForm_DragEnter” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 73 活动 错误 CS0103 当前上下文中不存在名称“ListBox_DragEnter” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 76 活动 错误 CS0103 当前上下文中不存在名称“ListBox_DragDrop” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 77 活动 错误 CS0103 当前上下文中不存在名称“AppSettings” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 84 活动 错误 CS0103 当前上下文中不存在名称“FileMonitor_FileChanged” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 112 活动 错误 CS0103 当前上下文中不存在名称“AddFilesToList” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 132 活动 错误 CS0229 在“ProcessingResult.FileName”和“ProcessingResult.FileName”之间具有二义性 Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 201 活动 错误 CS0229 在“ProcessingResult.Status”和“ProcessingResult.Status”之间具有二义性 Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 202 活动 错误 CS0229 在“ProcessingResult.Message”和“ProcessingResult.Message”之间具有二义性 Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 203 活动 错误 CS0229 在“ProcessingResult.FileName”和“ProcessingResult.FileName”之间具有二义性 Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 213 活动 错误 CS0229 在“ProcessingResult.Status”和“ProcessingResult.Status”之间具有二义性 Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 214 活动 错误 CS0229 在“ProcessingResult.Message”和“ProcessingResult.Message”之间具有二义性 Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 215 活动 错误 CS0246 未能找到类型或命名空间名“AppSettings”(是否缺少 using 指令或程序集引用?) Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\MainForm.cs 245 活动 错误 CS0103 当前上下文中不存在名称“Path” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\Program.cs 56 活动 错误 CS0103 当前上下文中不存在名称“Directory” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\Program.cs 62 活动 错误 CS0103 当前上下文中不存在名称“Path” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\Program.cs 62 活动 错误 CS0103 当前上下文中不存在名称“File” Skywan5g C:\Users\ThinkPad.LENOVO\source\repos\Skywan5g\Program.cs 63 活动
07-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值