151 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			151 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | 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 | |||
|  | { | |||
|  |      | |||
|  |     /// <summary>    | |||
|  |     /// 说明:本类主要负责对程序配置文件(.config)进行修改的类,    | |||
|  |     /// 可以对网站和应用程序的配置文件进行修改    | |||
|  |     /// </summary>    | |||
|  |     public class ConfigurationOperator | |||
|  |     { | |||
|  |         private Configuration config; | |||
|  |         private string configPath; | |||
|  |         private ConfigType configType; | |||
|  |         /// <summary>    | |||
|  |         /// 对应的配置文件    | |||
|  |         /// </summary>    | |||
|  |         public Configuration Configuration | |||
|  |         { | |||
|  |             get { return config; } | |||
|  |             set { config = value; } | |||
|  |         } | |||
|  |         /// <summary>    | |||
|  |         /// 构造函数    | |||
|  |         /// </summary>    | |||
|  |         /// <param name="configType">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>    | |||
|  |         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(); | |||
|  |         } | |||
|  |         /// <summary>    | |||
|  |         /// 构造函数    | |||
|  |         /// </summary>    | |||
|  |         /// <param name="path">.config文件的位置</param>    | |||
|  |         /// <param name="type">.config文件的类型,只能是网站配置文件或者应用程序配置文件</param>    | |||
|  |         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);    | |||
|  |             } | |||
|  |         } | |||
|  |         /// <summary>    | |||
|  |         /// 添加应用程序配置节点,如果已经存在此节点,则会修改该节点的值    | |||
|  |         /// </summary>    | |||
|  |         /// <param name="key">节点名称</param>    | |||
|  |         /// <param name="value">节点值</param>    | |||
|  |         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); | |||
|  |             } | |||
|  |         } | |||
|  |         /// <summary>    | |||
|  |         /// 添加数据库连接字符串节点,如果已经存在此节点,则会修改该节点的值    | |||
|  |         /// </summary>    | |||
|  |         /// <param name="key">节点名称</param>    | |||
|  |         /// <param name="value">节点值</param>    | |||
|  |         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); | |||
|  |             } | |||
|  |         } | |||
|  |         /// <summary>    | |||
|  |         /// 修改应用程序配置节点,如果不存在此节点,则会添加此节点及对应的值    | |||
|  |         /// </summary>    | |||
|  |         /// <param name="key">节点名称</param>    | |||
|  |         /// <param name="value">节点值</param>    | |||
|  |         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); | |||
|  |             } | |||
|  |         } | |||
|  |         /// <summary>    | |||
|  |         /// 修改数据库连接字符串节点,如果不存在此节点,则会添加此节点及对应的值    | |||
|  |         /// </summary>    | |||
|  |         /// <param name="key">节点名称</param>    | |||
|  |         /// <param name="value">节点值</param>    | |||
|  |         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); | |||
|  |             } | |||
|  |         } | |||
|  |         /// <summary>    | |||
|  |         /// 保存所作的修改    | |||
|  |         /// </summary>    | |||
|  |         public void Save() | |||
|  |         { | |||
|  |             config.Save(); | |||
|  |         } | |||
|  |     }   | |||
|  | } |