DeviceManager/DeviceRepair.Utils/Config/Configurations.cs
2024-08-02 10:52:45 +08:00

106 lines
3.5 KiB
C#

using System;
using System.Configuration;
using System.Reflection;
using System.Windows.Forms;
namespace DeviceRepair.Utils.Config
{
public static class Configurations
{
/// <summary>
/// 私有的配置项静态对象
/// </summary>
private static readonly ConfigProperties properties;
/// <summary>
/// 获取当前配置项静态对象
/// </summary>
public static ConfigProperties Properties
{
get { return properties; }
}
/// <summary>
/// Static Ctor
/// </summary>
static Configurations()
{
properties = new ConfigProperties();
var props = typeof(ConfigProperties).GetProperties(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo prop in props)
{
string auth = string.Empty;
object[] attrs = prop.GetCustomAttributes(typeof(ConfigAttribute), true);
//是否为DES加密配置项
bool bEncrypted = prop.GetCustomAttributes(typeof(DESEncryptedAttribute), true).Length > 0;
foreach (object attr in attrs)
{
var authAttr = attr as ConfigAttribute;
if (authAttr != null)
{
string propName = prop.Name;
auth = authAttr.Key;
}
try
{
string appValue = ConfigurationManager.AppSettings.Get(auth);
if (!string.IsNullOrWhiteSpace(appValue))
{
var value = Convert.ChangeType(bEncrypted ? Security.DESEncrypt.Decrypt(appValue) : appValue, prop.PropertyType);
prop.SetValue(properties, value, null);
}
}
catch (Exception ex)
{
throw ex;
}
break;
}
}
}
/// <summary>
/// 修改AppSettings中配置
/// </summary>
/// <param name="key">key值</param>
/// <param name="value">相应值</param>
public static bool SetConfigValue(string key, string value)
{
try
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (config.AppSettings.Settings[key] != null)
config.AppSettings.Settings[key].Value = value;
else
config.AppSettings.Settings.Add(key, value);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 获取AppSettings中某一节点值
/// </summary>
/// <param name="key"></param>
public static string GetConfigValue(string key)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (config.AppSettings.Settings[key] != null)
return config.AppSettings.Settings[key].Value;
else
return string.Empty;
}
}
}