/// <summary> /// Abstract SettingsProvider method /// </summary> public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection properties) { SettingsPropertyValueCollection values = new SettingsPropertyValueCollection(); string sectionName = GetSectionName(context); // Look for this section in both applicationSettingsGroup and userSettingsGroup IDictionary appSettings = Store.ReadSettings(sectionName, false); IDictionary userSettings = Store.ReadSettings(sectionName, true); ConnectionStringSettingsCollection connStrings = Store.ReadConnectionStrings(); // Now map each SettingProperty to the right StoredSetting and deserialize the value if found. foreach (SettingsProperty setting in properties) { string settingName = setting.Name; SettingsPropertyValue value = new SettingsPropertyValue(setting); // First look for and handle "special" settings SpecialSettingAttribute attr = setting.Attributes[typeof(SpecialSettingAttribute)] as SpecialSettingAttribute; bool isConnString = (attr != null) ? (attr.SpecialSetting == SpecialSetting.ConnectionString) : false; if (isConnString) { string connStringName = sectionName + "." + settingName; if (connStrings != null && connStrings[connStringName] != null) { value.PropertyValue = connStrings[connStringName].ConnectionString; } else if (setting.DefaultValue != null && setting.DefaultValue is string) { value.PropertyValue = setting.DefaultValue; } else { //No value found and no default specified value.PropertyValue = string.Empty; } value.IsDirty = false; //reset IsDirty so that it is correct when SetPropertyValues is called values.Add(value); continue; } // Not a "special" setting bool isUserSetting = IsUserSetting(setting); if (isUserSetting && !ConfigurationManagerInternalFactory.Instance.SupportsUserConfig) { // We encountered a user setting, but the current configuration system does not support // user settings. throw new ConfigurationErrorsException(SR.UserSettingsNotSupported); } IDictionary settings = isUserSetting ? userSettings : appSettings; if (settings.Contains(settingName)) { StoredSetting ss = (StoredSetting)settings[settingName]; string valueString = ss.Value.InnerXml; // We need to un-escape string serialized values if (ss.SerializeAs == SettingsSerializeAs.String) { valueString = Escaper.Unescape(valueString); } value.SerializedValue = valueString; } else if (setting.DefaultValue != null) { value.SerializedValue = setting.DefaultValue; } else { //No value found and no default specified value.PropertyValue = null; } value.IsDirty = false; //reset IsDirty so that it is correct when SetPropertyValues is called values.Add(value); } return(values); }
public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection properties) { SettingsPropertyValueCollection values = new SettingsPropertyValueCollection(); string sectionName = this.GetSectionName(context); IDictionary dictionary = this.Store.ReadSettings(sectionName, false); IDictionary dictionary2 = this.Store.ReadSettings(sectionName, true); ConnectionStringSettingsCollection settingss = this.Store.ReadConnectionStrings(); foreach (SettingsProperty property in properties) { string name = property.Name; SettingsPropertyValue value2 = new SettingsPropertyValue(property); SpecialSettingAttribute attribute = property.Attributes[typeof(SpecialSettingAttribute)] as SpecialSettingAttribute; if ((attribute != null) ? (attribute.SpecialSetting == SpecialSetting.ConnectionString) : false) { string str3 = sectionName + "." + name; if ((settingss != null) && (settingss[str3] != null)) { value2.PropertyValue = settingss[str3].ConnectionString; } else if ((property.DefaultValue != null) && (property.DefaultValue is string)) { value2.PropertyValue = property.DefaultValue; } else { value2.PropertyValue = string.Empty; } value2.IsDirty = false; values.Add(value2); } else { bool flag2 = this.IsUserSetting(property); if (flag2 && !ConfigurationManagerInternalFactory.Instance.SupportsUserConfig) { throw new ConfigurationErrorsException(System.SR.GetString("UserSettingsNotSupported")); } IDictionary dictionary3 = flag2 ? dictionary2 : dictionary; if (dictionary3.Contains(name)) { StoredSetting setting = (StoredSetting)dictionary3[name]; string innerXml = setting.Value.InnerXml; if (setting.SerializeAs == SettingsSerializeAs.String) { innerXml = this.Escaper.Unescape(innerXml); } value2.SerializedValue = innerXml; } else if (property.DefaultValue != null) { value2.SerializedValue = property.DefaultValue; } else { value2.PropertyValue = null; } value2.IsDirty = false; values.Add(value2); } } return(values); }