/************************************ 版权所有:SkylineSoft版权所有(C) 创建日期:2011-03-31 作 者:天涯居士 电子邮件:Jiangwzh@163.com 系统名称:SkylineSoft.GenericConfiguration 模块名称:通用配置文件访问 内容摘要:简华配置文件方问 ***********************************/ using System; using System.Collections.Generic; using System.Text; using System.Configuration; namespace SkylineSoft { public class GenericConfiguration { private Configuration Config { get; set; } private GenericConfiguration(Configuration config) { this.Config = config; } /// <summary> /// 打开配置文件 /// /// 当前应用程序默认配置文件 /// </summary> /// <returns></returns> public static GenericConfiguration Open() { return Open(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); } /// <summary> /// 打开配置文件 /// </summary> /// <param name="fileName">配置文件名</param> /// <returns></returns> public static GenericConfiguration Open(string fileName) { ExeConfigurationFileMap file = new ExeConfigurationFileMap(); file.ExeConfigFilename = fileName; return new GenericConfiguration( ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None)); } /// <summary> /// 获取数据库连接设置 /// </summary> /// <param name="key">键名</param> /// <returns></returns> public ConnectionStringSettings GetConnectionStringSetting(string key) { return this.Config.ConnectionStrings.ConnectionStrings[key]; } /// <summary> /// 更新数据连接设置 /// </summary> /// <param name="key">键名</param> /// <param name="connString">连接字符串</param> public void UpdateConnectionStringSetting(string key, string connString) { if (this.Config.ConnectionStrings.ConnectionStrings[key] == null) this.Config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings(key, connString)); else this.Config.ConnectionStrings.ConnectionStrings[key].ConnectionString = connString; } /// <summary> /// 删除数据库连接设置 /// </summary> /// <param name="key">键名</param> public void RemoveConnectionStringSetting(string key) { if (this.Config.ConnectionStrings.ConnectionStrings[key] != null) this.Config.ConnectionStrings.ConnectionStrings.Remove(key); } /// <summary> /// 判断AppSettings中指定的键是否存在 /// </summary> /// <param name="key">键名</param> /// <returns></returns> public bool AppSettingExisted(string key) { return this.Config.AppSettings.Settings[key] != null; } /// <summary> /// 获取AppSettings /// /// 返回String类型 /// </summary> /// <param name="key">键名</param> /// <returns></returns> public string GetAppSettingString( string key) { if (this.Config.AppSettings.Settings[key] != null && !string.IsNullOrEmpty(Config.AppSettings.Settings[key].Value)) return Config.AppSettings.Settings[key].Value; return string.Empty; } /// <summary> /// 获取AppSettings /// /// 返回Boolean类型 /// </summary> /// <param name="key">键名</param> /// <returns></returns> public bool GetAppSettingBoolean(string key) { if (this.Config.AppSettings.Settings[key] != null) { string value = Config.AppSettings.Settings[key].Value; if (!string.IsNullOrEmpty(value)) return BooleanUtil.ConvertFrom(value); } return false; } /// <summary> /// 获取AppSettings /// </summary> /// <typeparam name="T">值类型</typeparam> /// <param name="config">配置对象</param> /// <param name="key">键名</param> /// <returns></returns> public T GetAppSettings<T>( string key) { if (this.Config.AppSettings.Settings[key] != null ) { string value = Config.AppSettings.Settings[key].Value; if (!string.IsNullOrEmpty(value)) return (T)Convert.ChangeType(value, typeof(T)); } return ReflectionUtil.GetTypeDefaultValue<T>(); } /// <summary> /// 更新AppSettings /// </summary> /// <param name="key">键名</param> /// <param name="value">值</param> public void UpdateAppSettings(string key, string value) { if (AppSettingExisted(key)) this.Config.AppSettings.Settings[key].Value = value; else this.Config.AppSettings.Settings.Add(key,value); } /// <summary> /// 更新AppSettings /// </summary> /// <param name="key">键名</param> /// <param name="value">值</param> public void UpdateAppSettings(string key, object value) { if (AppSettingExisted(key)) this.Config.AppSettings.Settings[key].Value = value==null?string.Empty:value.ToString(); else this.Config.AppSettings.Settings.Add(key, value == null ? string.Empty : value.ToString()); } /// <summary> /// 删除Appsettings中指定的键 /// </summary> /// <param name="key"></param> public void RemoveAppSettings(string key) { if (AppSettingExisted(key)) this.Config.AppSettings.Settings.Remove(key); } /// <summary> /// 获取配置节 /// </summary> /// <typeparam name="T">配置节类型</typeparam> /// <param name="config">配置对象</param> /// <param name="sectionName">节名</param> /// <returns></returns> public T GetSection<T>(string sectionName) where T : ConfigurationSection { T section = null; try { section = this.Config.GetSection(sectionName) as T; } catch { } return section; } /// <summary> /// 保存配置 /// </summary> public void Save() { if(this.Config!=null) this.Config.Save(); } /// <summary> /// 保存配置 /// </summary> /// <param name="mode">保存方式</param> public void Save(ConfigurationSaveMode mode) { if (this.Config != null) this.Config.Save(mode); } /// <summary> /// 另存配置 /// </summary> /// <param name="fileName">文件名</param> public void SaveAs(string fileName) { if (this.Config != null) this.Config.SaveAs(fileName); } /// <summary> /// 另存配置 /// </summary> /// <param name="fileName">文件名</param> /// <param name="mode">保存方式</param> public void SaveAs(string fileName, ConfigurationSaveMode mode) { if (this.Config != null) this.Config.SaveAs(fileName, mode); } } }