private static bool TryConvertToSpecialValues(object value, Type targetType, CultureInfo culture, out object result) { result = null; if (value is string && ((string)value).Length == 0) { result = ChoTypeEx.Default(targetType); return(true); } if (targetType.IsEnum) { if (value is string) { result = Enum.Parse(targetType, value as string); if (Enum.IsDefined(targetType, result)) { return(true); } else { return(false); } } else { result = Enum.ToObject(targetType, value); if (Enum.IsDefined(targetType, result)) { return(true); } else { return(false); } } } else { if (value is string && targetType == typeof(Guid)) { result = (object)new Guid(value as string); return(true); } else if (value is string && targetType == typeof(Version)) { result = (object)new Version(value as string); return(true); } else if (targetType == typeof(string)) { result = value.ToString(); return(true); } else { result = ChoString.ToObjectInternal(value as string, targetType); return(true); } } }