/// <summary> /// write setting to app config /// </summary> /// <param name="cPath">path to config file</param> /// <param name="location">app section</param> /// <param name="name">setting</param> /// <param name="newValue">new value</param> public static void SetSetting(string cPath, string location, string name, string newValue) { //first check the cache string lookup = location + ":" + name; ProgramSettings ps = GetInstance(); string nodeName = string.Format(@"descendant::applicationSettings/{0}/setting[@name='{1}']/value", location, name); var doc = new XmlDocument(); string configPath; if (cPath.Length > 0) { configPath = cPath; } else { Configuration c = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); configPath = c.FilePath; } doc.Load(configPath); XmlNode node = doc.SelectSingleNode(nodeName); if (node == null) { string parent = string.Format(@"descendant::applicationSettings/{0}", location); XmlNode parentNode = doc.SelectSingleNode(parent); if (parentNode != null) { XmlNode newNode = doc.CreateNode(XmlNodeType.Element, "setting", string.Empty); XmlAttribute nameAttribute = doc.CreateAttribute("name"); nameAttribute.Value = name; if (newNode.Attributes != null) { newNode.Attributes.Append(nameAttribute); } node = doc.CreateNode(XmlNodeType.Element, "value", string.Empty); newNode.AppendChild(node); parentNode.AppendChild(newNode); } } if (node != null) { node.InnerText = newValue; doc.Save(configPath); if (ps._nvc.Get(lookup) != null) { ps._nvc.Remove(lookup); } ps._nvc.Set(lookup, newValue); } }
private static string GetNodeValue(ProgramSettings ps, string lookup, XmlDocument doc, string nodeName, string ret) { XmlNode node = doc.SelectSingleNode(nodeName); if (node != null) { ret = node.InnerText; ps._nvc.Set(lookup, ret); } return(ret); }
/// <summary> /// Get setting from custom app.config /// </summary> /// <param name="cPath">path to config file</param> /// <param name="location">section name</param> /// <param name="name">setting name</param> /// <param name="defaultValue">default value</param> /// <returns>setting value</returns> public static string GetSetting(string cPath, string location, string name, string defaultValue) { string ret = string.Empty; try { //first check the cache string lookup = location + ":" + name; ProgramSettings ps = GetInstance(); if (ps._nvc.Get(lookup) != null) { lock (LockObj) ret = ps._nvc.Get(lookup); } else { lock (LockObj) { string configFile = string.Empty; try { var doc = new XmlDocument(); configFile = LoadConfigFile(cPath, doc); string nodeName = string.Format(@"descendant::applicationSettings/{0}/setting[@name='{1}']/value", location, name); ret = GetNodeValue(ps, lookup, doc, nodeName, ret); } catch (Exception ex) { ExceptionHelper.HandleException(ex, string.Format("Can't find config file {0}", configFile)); throw; } } } } catch (Exception ex) { ret = string.Empty; ExceptionHelper.HandleException(ex); if (string.IsNullOrEmpty(defaultValue)) { throw; } } if (string.IsNullOrEmpty(ret) && !string.IsNullOrEmpty(defaultValue)) { ret = defaultValue; } return(ret); }
private static ProgramSettings GetInstance() { try { lock (typeof(ProgramSettings)) { if (_instance == null) { _instance = new ProgramSettings(); } } } catch (Exception ex) { ExceptionHelper.HandleException(ex); } return(_instance); }
private static ProgramSettings GetInstance() { try { lock (typeof (ProgramSettings)) { if (_instance == null) { _instance = new ProgramSettings(); } } } catch (Exception ex) { ExceptionHelper.HandleException(ex); } return _instance; }
private static string GetNodeValue(ProgramSettings ps, string lookup, XmlDocument doc, string nodeName, string ret) { XmlNode node = doc.SelectSingleNode(nodeName); if (node != null) { ret = node.InnerText; ps._nvc.Set(lookup, ret); } return ret; }