private void LoadPropertyValue (SettingsPropertyCollection collection, SettingElement element, bool allowOverwrite)
{
SettingsProperty prop = collection [element.Name];
if (prop == null) { // see bug #343459
prop = new SettingsProperty (element.Name);
collection.Add (prop);
}
SettingsPropertyValue value = new SettingsPropertyValue (prop);
value.IsDirty = false;
if (element.Value.ValueXml != null) {
switch (value.Property.SerializeAs) {
case SettingsSerializeAs.Xml:
value.SerializedValue = element.Value.ValueXml.InnerXml;
break;
case SettingsSerializeAs.String:
value.SerializedValue = element.Value.ValueXml.InnerText;
break;
case SettingsSerializeAs.Binary:
value.SerializedValue = Convert.FromBase64String (element.Value.ValueXml.InnerText);
break;
}
}
else
value.SerializedValue = prop.DefaultValue;
try
{
if (allowOverwrite)
values.Remove (element.Name);
values.Add (value);
} catch (ArgumentException ex) {
throw new ConfigurationErrorsException (string.Format (
CultureInfo.InvariantCulture,
"Failed to load value for '{0}'.",
element.Name), ex);
}
}