public static T ChangeType <T>(object value) { var data = new ChangeTypeData <T>(value); changeTypeImpl(ref data); return(data.GetResultOrThrow()); }
public static object ChangeType(object value, Type targetType) { var data = new ChangeTypeData <object>(value, targetType); changeTypeImpl(ref data); return(data.GetResultOrThrow()); }
private static void changeTypeImpl <T>(ref ChangeTypeData <T> data) { if (data.OriginalValue is T v) { data.SetResult(v); return; } if (data.OriginalValue == null) { data.SetResult(default);
public static bool TryChangeType <T>(object value, out T result) { var data = new ChangeTypeData <T>(value); changeTypeImpl(ref data); if (data.Succeed) { result = data.ConvertedValue; return(true); } else { result = default; return(false); } }
public static bool TryChangeType(object value, Type targetType, out object result) { var data = new ChangeTypeData <object>(value, targetType); changeTypeImpl(ref data); if (data.Succeed) { result = data.ConvertedValue; return(true); } else { result = null; return(false); } }