private Dictionary <string, IList <CtsConfigurationSetting> > GetConfigurationSubSections() { Dictionary <string, IList <CtsConfigurationSetting> > dictionary = this.configurationSubSections; if (dictionary == null) { CtsConfigurationSection ctsConfigurationSection = null; try { ctsConfigurationSection = (ConfigurationManager.GetSection("CTS") as CtsConfigurationSection); } catch (ConfigurationErrorsException) { this.LogConfigurationErrorEvent(); } CtsConfigurationSetting ctsConfigurationSetting = null; try { string value = ConfigurationManager.AppSettings["TemporaryStoragePath"]; if (!string.IsNullOrEmpty(value)) { ctsConfigurationSetting = new CtsConfigurationSetting("TemporaryStorage"); ctsConfigurationSetting.AddArgument("Path", value); } } catch (ConfigurationErrorsException) { this.LogConfigurationErrorEvent(); } lock (this.lockObject) { dictionary = this.configurationSubSections; if (dictionary == null) { if (ctsConfigurationSection != null) { dictionary = ctsConfigurationSection.SubSectionsDictionary; } else { dictionary = new Dictionary <string, IList <CtsConfigurationSetting> >(); dictionary.Add(string.Empty, new List <CtsConfigurationSetting>()); } if (ctsConfigurationSetting != null) { IList <CtsConfigurationSetting> list = dictionary[string.Empty]; bool flag2 = false; foreach (CtsConfigurationSetting ctsConfigurationSetting2 in list) { if (string.Equals(ctsConfigurationSetting2.Name, ctsConfigurationSetting.Name)) { flag2 = true; break; } } if (!flag2) { list.Add(ctsConfigurationSetting); } } this.configurationSubSections = dictionary; } } } return(dictionary); }
/// <summary> /// Gets the configuration subsection specified. /// </summary> /// <param name="subSectionName">Name of the subsection.</param> /// <returns> /// A list of <see cref="CtsConfigurationSetting"/>s for the specified section. /// </returns> public IList <CtsConfigurationSetting> GetConfiguration(string subSectionName) { IList <CtsConfigurationSetting> subSection; if (this.configurationSubSections == null) { lock (this.lockObject) { if (this.configurationSubSections == null) { try { CtsConfigurationSection section = ConfigurationManager.GetSection("CTS") as CtsConfigurationSection; if (section != null) { this.configurationSubSections = section.SubSectionsDictionary; } else { this.configurationSubSections = new Dictionary <string, IList <CtsConfigurationSetting> > { { string.Empty, new List <CtsConfigurationSetting>() } }; } string path = ConfigurationManager.AppSettings["TemporaryStoragePath"]; if (!string.IsNullOrEmpty(path)) { CtsConfigurationSetting newSetting = new CtsConfigurationSetting("TemporaryStorage"); newSetting.AddArgument("Path", path); subSection = this.configurationSubSections[string.Empty]; subSection.Add(newSetting); } ConfigurationManager.RefreshSection("CTS"); } catch (ConfigurationErrorsException /*exception*/) { ApplicationServices.Provider.LogConfigurationErrorEvent(); this.configurationSubSections = new Dictionary <string, IList <CtsConfigurationSetting> > { { string.Empty, new List <CtsConfigurationSetting>() } }; } } } } if (subSectionName == null) { subSectionName = string.Empty; } if (!this.configurationSubSections.TryGetValue(subSectionName, out subSection)) { subSection = EmptySubSection; } return(subSection); }