in MySQL.Data/src/common/MySqlConnectionStringOption.cs [143:194]
public void ValidateValue(ref object value, string keyword = null, bool isXProtocol = false)
{
bool b;
if (value == null) return;
string typeName = BaseType.Name;
Type valueType = value.GetType();
if (valueType.Name == "String")
{
if (BaseType == valueType) return;
else if (BaseType == typeof(bool))
{
if (string.Compare("yes", (string)value, StringComparison.OrdinalIgnoreCase) == 0) value = true;
else if (string.Compare("no", (string)value, StringComparison.OrdinalIgnoreCase) == 0) value = false;
else if (Boolean.TryParse(value.ToString(), out b)) value = b;
else throw new ArgumentException(String.Format(Resources.ValueNotCorrectType, value));
return;
}
}
if (typeName == "Boolean" && Boolean.TryParse(value.ToString(), out b)) { value = b; return; }
UInt64 uintVal;
if (typeName.StartsWith("UInt64") && UInt64.TryParse(value.ToString(), NumberStyles.Any, CultureInfo.InvariantCulture, out uintVal)) { value = uintVal; return; }
UInt32 uintVal32;
if (typeName.StartsWith("UInt32") && UInt32.TryParse(value.ToString(), NumberStyles.Any, CultureInfo.InvariantCulture, out uintVal32)) { value = uintVal32; return; }
Int64 intVal;
if (typeName.StartsWith("Int64") && Int64.TryParse(value.ToString(), NumberStyles.Any, CultureInfo.InvariantCulture, out intVal)) { value = intVal; return; }
Int32 intVal32;
if (typeName.StartsWith("Int32") && Int32.TryParse(value.ToString(), NumberStyles.Any, CultureInfo.InvariantCulture, out intVal32)) { value = intVal32; return; }
object objValue;
Type baseType = BaseType.GetTypeInfo().BaseType;
if (baseType != null && baseType.Name == "Enum" && ParseEnum(value.ToString(), out objValue))
{
value = objValue;
return;
}
if (!string.IsNullOrEmpty(keyword) && isXProtocol)
{
switch (keyword)
{
case "compression":
throw new ArgumentException(string.Format(ResourcesX.CompressionInvalidValue, value));
}
}
throw new ArgumentException(String.Format(Resources.ValueNotCorrectType, value));
}