Iam被.Net的ChangeType方法困惑。我寫了一個擴展方法來轉換預期類型的對象值(來自我的例子中的數據庫)。只要不使用可爲空的類型,這個工作很好。C#Convert.ChangeType無法將int轉換爲System.Nullable
蔭做這個至今:
public static T ConvertTo<T>(this object value)
{
T returnValue = default(T);
if ((value != null) &&
(value != DBNull.Value))
{
returnValue = (T)Convert.ChangeType(value, typeof(T));
}
return returnValue;
}
如果我叫:
int test = myObject.ConvertTo<int>();
蔭得到int值或者0,如果myObject的不包含INT。 因爲它可以做到以下幾點:
int? test = 5;
我想是沒有問題蒙上了INT爲int?但如果我打電話給:
int? test = myObject.ConvertTo<int?>();
Iam正在獲取System.InvalidCastException。無效從System.Int32轉換爲System.Nullable`1
異常在Convert.ChangeType行中引發。
有人知道爲什麼嗎?
http://stackoverflow.com/questions/3531318/convert-changetype-fails-on-nullable-types – tdgtyugdyugdrugdr