private void SetDefaultValue(object value) {
// Validate the default value if any. This should make errors from invalid defaults easier to catch
if (value != null && value != ConfigurationElement.s_nullPropertyValue) {
bool canAssign = _type.IsAssignableFrom(value.GetType());
if (!canAssign && this.Converter.CanConvertFrom(value.GetType())) {
value = this.Converter.ConvertFrom(value);
}
else if (!canAssign) {
throw new ConfigurationErrorsException(SR.GetString(SR.Default_value_wrong_type, _name));
}
Validate(value);
_defaultValue = value;
}
}