public override SettingsPropertyValueCollection GetPropertyValues(SettingsContext context, SettingsPropertyCollection properties) { ExTraceGlobals.ProgramFlowTracer.TraceFunction <ExchangeSettingsProvider>(0L, "-->ExchangeSettingsProvider.GetPropertyValues: {0}", this); SettingsPropertyValueCollection settingsPropertyValueCollection = new SettingsPropertyValueCollection(); string key = (string)context["SettingsKey"]; IDictionary dictionary = (IDictionary)this.settingsStore[key]; foreach (object obj in properties) { SettingsProperty settingsProperty = (SettingsProperty)obj; string name = settingsProperty.Name; SettingsPropertyValue settingsPropertyValue = new SettingsPropertyValue(settingsProperty); if (dictionary == null || !dictionary.Contains(name)) { goto IL_114; } ExTraceGlobals.DataFlowTracer.TraceFunction <string, object, Type>(0L, "*--ExchangeSettingsProvider.GetPropertyValues: Converting and setting value: {0} = {1} as {2}", name, dictionary[name], settingsProperty.PropertyType); if (dictionary[name] != null || !settingsProperty.PropertyType.IsValueType) { try { settingsPropertyValue.PropertyValue = Convert.ChangeType(dictionary[name], settingsProperty.PropertyType); goto IL_24D; } catch (InvalidCastException arg) { ExTraceGlobals.DataFlowTracer.TraceError <InvalidCastException>(0L, "Exception in ExchangeSettingsProvider.GetPropertyValues: {0}", arg); settingsPropertyValue.PropertyValue = settingsPropertyValue.Property.DefaultValue; goto IL_24D; } goto IL_114; } settingsPropertyValue.PropertyValue = settingsPropertyValue.Property.DefaultValue; IL_24D: settingsPropertyValueCollection.Add(settingsPropertyValue); continue; IL_114: if (string.IsNullOrEmpty((string)settingsProperty.DefaultValue)) { ExTraceGlobals.DataFlowTracer.TraceFunction <string, Type>(0L, "*--ExchangeSettingsProvider.GetPropertyValues: Setting to null: {0} as {1}", name, settingsProperty.PropertyType); settingsPropertyValue.PropertyValue = null; goto IL_24D; } if (typeof(Enum).IsAssignableFrom(settingsProperty.PropertyType)) { ExTraceGlobals.DataFlowTracer.TraceFunction <string, object, Type>(0L, "*--ExchangeSettingsProvider.GetPropertyValues: Converting and setting enum value: {0} = {1} as {2}", name, settingsProperty.DefaultValue, settingsProperty.PropertyType); settingsPropertyValue.PropertyValue = EnumValidator.Parse(settingsProperty.PropertyType, (string)settingsProperty.DefaultValue, EnumParseOptions.IgnoreCase); goto IL_24D; } MethodInfo method = settingsProperty.PropertyType.GetMethod("Parse", BindingFlags.Static | BindingFlags.Public, null, new Type[] { typeof(string) }, null); if (null != method) { ExTraceGlobals.DataFlowTracer.TraceFunction <string, object, Type>(0L, "*--ExchangeSettingsProvider.GetPropertyValues: Parsing value: {0} = {1} as {2}", name, settingsProperty.DefaultValue, settingsProperty.PropertyType); settingsPropertyValue.PropertyValue = method.Invoke(null, new object[] { settingsProperty.DefaultValue }); goto IL_24D; } ExTraceGlobals.DataFlowTracer.TraceFunction <string, object, Type>(0L, "*--ExchangeSettingsProvider.GetPropertyValues: Using default value: {0} = {1} as {2}", name, settingsProperty.DefaultValue, settingsProperty.PropertyType); settingsPropertyValue.SerializedValue = settingsProperty.DefaultValue; goto IL_24D; } ExTraceGlobals.ProgramFlowTracer.TraceFunction <ExchangeSettingsProvider>(0L, "<--ExchangeSettingsProvider.GetPropertyValues: {0}", this); return(settingsPropertyValueCollection); }