using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Xml;
namespace OrderToPrint
{
public class AppConfigHelper
{
public static string GetValueByKey(string key)
{
ConfigurationManager.RefreshSection("appSettings");
return ConfigurationManager.AppSettings[key];
}
public static void ModifyAppSettings(string strKey, string value)
{
//獲得配置檔案的全路徑
var assemblyConfigFile = Assembly.GetEntryAssembly().Location;
var appDomainConfigFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
ChangeConfiguration(strKey, value, assemblyConfigFile);
ModifyAppConfig(strKey, value, appDomainConfigFile);
}
private static void ModifyAppConfig(string strKey, string value, string configPath)
{
var doc = new XmlDocument();
doc.Load(configPath);
//找出名稱為“add”的所有元素
var nodes = doc.GetElementsByTagName("add");
for (int i = 0; i < nodes.Count; i++)
{
//獲得将目前元素的key屬性
var xmlAttributeCollection = nodes[i].Attributes;
if (xmlAttributeCollection != null)
{
var att = xmlAttributeCollection["key"];
if (att == null) continue;
//根據元素的第一個屬性來判斷目前的元素是不是目标元素
if (att.Value != strKey) continue;
//對目标元素中的第二個屬性指派
att = xmlAttributeCollection["value"];
att.Value = value;
}
break;
}
//儲存上面的修改
doc.Save(configPath);
ConfigurationManager.RefreshSection("appSettings");
}
public static void ChangeConfiguration(string key, string value, string path)
{
var config = ConfigurationManager.OpenExeConfiguration(path);
config.AppSettings.Settings.Remove(key);
config.AppSettings.Settings.Add(key, value);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
}
}
}