public static object Convert(IBindingMemberInfo member, Type type, object value) { if (XamarinFormsToolkitExtensions.ValueConverter != null) { return(XamarinFormsToolkitExtensions.ValueConverter(member.Member as MemberInfo, type, value)); } if (value == null) { return(type.GetDefaultValue()); } if (type.IsInstanceOfType(value)) { return(value); } if (BindingExtensions.IsConvertible(value)) { return(System.Convert.ChangeType(value, type.GetNonNullableType(), BindingServiceProvider.BindingCultureInfo())); } if (type.GetTypeInfo().IsEnum) { var s = value as string; if (s != null) { return(Enum.Parse(type, s, false)); } return(Enum.ToObject(type, value)); } if (type == typeof(string)) { return(value.ToString()); } return(value); }
public static object Convert(IBindingMemberInfo member, Type type, object value) #endif { if (value == null) { return(type.GetDefaultValue()); } if (type.IsInstanceOfType(value)) { return(value); } #if !WINDOWS_UWP && !NETFX_CORE #if XAMARIN_FORMS var converter = GetTypeConverter(type, member); #else var converter = GetTypeConverter(type, member.Member as MemberInfo); #endif if (converter != null && converter.CanConvertFrom(value.GetType())) { return(converter.ConvertFrom(value)); } #endif #if NETFX_CORE #if XAMARIN_FORMS if (ConvertibleTypes.Contains(value)) #else if (BindingExtensions.IsConvertible(value)) #endif #else if (value is IConvertible) #endif { return(System.Convert.ChangeType(value, type.GetNonNullableType(), BindingServiceProvider.BindingCultureInfo())); } #if WINDOWS_UWP || NETFX_CORE if (type.GetTypeInfo().IsEnum) #else if (type.IsEnum) #endif { #if WINDOWS_UWP || NETFX_CORE var s = value as string; if (s != null) { return(Enum.Parse(type, s, false)); } #endif return(Enum.ToObject(type, value)); } if (type == typeof(string)) { return(value.ToString()); } return(value); }