/// <summary>
/// 将指定的 Number 类型的值转换成 T 类型的值。
/// </summary>
/// <typeparam name="T">转换后的类型。</typeparam>
/// <param name="number">指定的 Number 类型的值。</param>
/// <returns>返回转换后的 T 类型的值。</returns>
internal static T ConvertTo<T>(Number number) where T : struct
{ number.Validate();
//return (T)(number.Value);
return number.boolUseDouble ? (T)number.doubleValue : (T)number.decimalValue; // 这行不对,怎么写?
}(T)number.doubleValue 这样写编译不对,怎么写?
假设T是Point,能把double转成Point吗?能把decimal转成Point吗?
方法一定要这么写的 internal static T ConvertTo<T>(Number number) 实现怎么实现?
internal static T ConvertTo<T>(Number number)
{
number.Validate();
if (number.boolUseDouble)
{
//ChangeType返回object,object可以被强转成任意类型,所以编译通过
return (T)Convert.ChangeType(number.doubleValue, typeof(T));
}
else
{
return (T)Convert.ChangeType(number.decimalValue, typeof(T));
}
}