106 lines
3.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|