public void TestToDouble() { Assert.Null(DoubleConverter.ToNullableDouble(null)); Assert.True(Math.Abs(123 - DoubleConverter.ToDouble(123)) < 0.001); Assert.True(Math.Abs(123.456 - DoubleConverter.ToDouble(123.456)) < 0.001); Assert.True(Math.Abs(123.456 - DoubleConverter.ToDouble("123.456")) < 0.001); Assert.True(Math.Abs(123 - DoubleConverter.ToDoubleWithDefault(null, 123)) < 0.001); Assert.True(Math.Abs(0 - DoubleConverter.ToDoubleWithDefault(false, 123)) < 0.001); Assert.True(Math.Abs(123 - DoubleConverter.ToDoubleWithDefault("ABC", 123)) < 0.001); }
public void TestToLong() { DateTime date = new DateTime(); Assert.Equal(date.Ticks, LongConverter.ToLong(date)); Assert.Equal(100, LongConverter.ToLong(new TimeSpan(100))); Assert.Equal(123, LongConverter.ToLong(123)); Assert.Equal(123, LongConverter.ToLong((short)123)); Assert.Equal(123, LongConverter.ToLong(123.456)); Assert.Equal(123, LongConverter.ToLong(DoubleConverter.ToDouble(123.456))); Assert.Equal(123, LongConverter.ToLong("123")); Assert.Equal(123, LongConverter.ToLong("123.465")); Assert.Equal(0, LongConverter.ToLong(null)); }
public static T ToTypeWithDefault <T>(object value, T defaultValue) { if (value == null) { return(defaultValue); } if (value is T) { return((T)value); } var typeInfo = typeof(T).GetTypeInfo(); if (typeInfo.IsEnum) { value = EnumConverter.ToEnumWithDefault <T>(value, defaultValue); } else if (typeInfo.IsAssignableFrom(typeof(decimal))) { value = DecimalConverter.ToNullableDecimal(value); } else if (typeInfo.IsAssignableFrom(typeof(string))) { value = StringConverter.ToNullableString(value); } else if (typeInfo.IsAssignableFrom(typeof(long))) { value = LongConverter.ToNullableLong(value); } else if (typeInfo.IsAssignableFrom(typeof(int))) { value = IntegerConverter.ToNullableInteger(value); } else if (typeInfo.IsAssignableFrom(typeof(double))) { value = DoubleConverter.ToNullableDouble(value); } else if (typeInfo.IsAssignableFrom(typeof(float))) { value = FloatConverter.ToNullableFloat(value); } else if (typeInfo.IsAssignableFrom(typeof(bool))) { value = BooleanConverter.ToNullableBoolean(value); } else if (typeInfo.IsAssignableFrom(typeof(DateTime))) { value = DateTimeConverter.ToNullableDateTime(value); } else if (typeInfo.IsAssignableFrom(typeof(TimeSpan))) { value = TimeSpanConverter.ToNullableTimeSpan(value); } if (value == null) { return(defaultValue); } try { if (typeInfo.IsClass || typeInfo.IsInterface) { return(value is T ? (T)value : defaultValue); } else { return((T)value); } } catch { return(defaultValue); } }
public static T?ToNullableType <T>(object value) where T : struct { if (value == null) { return(null); } if (value is T) { return((T)value); } var typeInfo = typeof(T).GetTypeInfo(); if (typeInfo.IsEnum) { value = EnumConverter.ToNullableEnum <T>(value); } else if (typeInfo.IsAssignableFrom(typeof(decimal))) { value = DecimalConverter.ToNullableDecimal(value); } else if (typeInfo.IsAssignableFrom(typeof(string))) { value = StringConverter.ToNullableString(value); } else if (typeInfo.IsAssignableFrom(typeof(long))) { value = LongConverter.ToNullableLong(value); } else if (typeInfo.IsAssignableFrom(typeof(int))) { value = IntegerConverter.ToNullableInteger(value); } else if (typeInfo.IsAssignableFrom(typeof(double))) { value = DoubleConverter.ToNullableDouble(value); } else if (typeInfo.IsAssignableFrom(typeof(float))) { value = FloatConverter.ToNullableFloat(value); } else if (typeInfo.IsAssignableFrom(typeof(DateTime))) { value = DateTimeConverter.ToNullableDateTime(value); } else if (typeInfo.IsAssignableFrom(typeof(TimeSpan))) { value = TimeSpanConverter.ToNullableTimeSpan(value); } if (value == null) { return(null); } try { return((T)value); } catch { return(null); } }