using System; using System.Configuration; using System.Reflection; using System.Windows.Forms; namespace DeviceRepair.Utils.Config { public static class Configurations { /// /// 私有的配置项静态对象 /// private static readonly ConfigProperties properties; /// /// 获取当前配置项静态对象 /// public static ConfigProperties Properties { get { return properties; } } /// /// Static Ctor /// 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; } } } /// /// 修改AppSettings中配置 /// /// key值 /// 相应值 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; } } /// /// 获取AppSettings中某一节点值 /// /// 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; } } }