using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; using DeiNiu.Utils; //using System.Windows.Forms; namespace DeiNiu.wms.win.utils { /// /// 说明:本类主要负责对程序配置文件(.config)进行修改的类, /// 可以对网站和应用程序的配置文件进行修改 /// public class ConfigurationOperator { private Configuration config; private string configPath; private ConfigType configType; /// /// 对应的配置文件 /// public Configuration Configuration { get { return config; } set { config = value; } } /// /// 构造函数 /// /// .config文件的类型,只能是网站配置文件或者应用程序配置文件 public ConfigurationOperator(ConfigType configType) { this.configType = configType; if (configType == ConfigType.ExeConfig) { configPath = System.Windows.Forms.Application.ExecutablePath; //AppDomain.CurrentDomain.BaseDirectory; } else { // configPath = HttpContext.Current.Request.ApplicationPath; } Initialize(); } /// /// 构造函数 /// /// .config文件的位置 /// .config文件的类型,只能是网站配置文件或者应用程序配置文件 public ConfigurationOperator(string configPath, ConfigType configType) { this.configPath = configPath; this.configType = configType; Initialize(); } //实例化configuration,根据配置文件类型的不同,分别采取了不同的实例化方法 private void Initialize() { //如果是WinForm应用程序的配置文件 if (configType == ConfigType.ExeConfig) { config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); //config = System.Configuration.ConfigurationManager.OpenExeConfiguration(configPath); } else//WebForm的配置文件 { //config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(configPath); } } /// /// 添加应用程序配置节点,如果已经存在此节点,则会修改该节点的值 /// /// 节点名称 /// 节点值 public void AddAppSetting(string key, string value) { AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings"); if (appSetting.Settings[key] == null)//如果不存在此节点,则添加 { appSetting.Settings.Add(key, value); } else//如果存在此节点,则修改 { ModifyAppSetting(key, value); } } /// /// 添加数据库连接字符串节点,如果已经存在此节点,则会修改该节点的值 /// /// 节点名称 /// 节点值 public void AddConnectionString(string key, string connectionString) { ConnectionStringsSection connectionSetting = (ConnectionStringsSection)config.GetSection("connectionStrings"); if (connectionSetting.ConnectionStrings[key] == null)//如果不存在此节点,则添加 { ConnectionStringSettings connectionStringSettings = new ConnectionStringSettings(key, connectionString); connectionSetting.ConnectionStrings.Add(connectionStringSettings); } else//如果存在此节点,则修改 { ModifyConnectionString(key, connectionString); } } /// /// 修改应用程序配置节点,如果不存在此节点,则会添加此节点及对应的值 /// /// 节点名称 /// 节点值 public void ModifyAppSetting(string key, string newValue) { AppSettingsSection appSetting = (AppSettingsSection)config.GetSection("appSettings"); if (appSetting.Settings[key] != null)//如果存在此节点,则修改 { appSetting.Settings[key].Value = newValue; ConfigurationManager.RefreshSection("appSettings"); } else//如果不存在此节点,则添加 { AddAppSetting(key, newValue); } } /// /// 修改数据库连接字符串节点,如果不存在此节点,则会添加此节点及对应的值 /// /// 节点名称 /// 节点值 public void ModifyConnectionString(string key, string connectionString) { ConnectionStringsSection connectionSetting = (ConnectionStringsSection)config.GetSection("connectionStrings"); if (connectionSetting.ConnectionStrings[key] != null)//如果存在此节点,则修改 { connectionSetting.ConnectionStrings[key].ConnectionString = connectionString; } else//如果不存在此节点,则添加 { AddConnectionString(key, connectionString); } } /// /// 保存所作的修改 /// public void Save() { config.Save(); } } }