我不斷收到錯誤System.InvalidCastException:指定的轉換無效。在運行期間。 RewardJoinType在數據庫中可以爲null。可空的Enum轉換爲Int16
這是代碼行轉換失敗:
c.rewardJoinType = (RewardJoinType)reader.GetInt16();
'reader.GetInt16()' 投擲類型的異常則 '' 短{System.InvalidCastException}
在一個類中我有下面的代碼行:
private RewardJoinType? rewardJoinType;
...一些其他的代碼
c.rewardJoinType = (RewardJoinType?)reader.GetInt16();
...一些其他的代碼
conn.AddParam("@rewardJoinType", (int?)rewardJoinType);
...一些其他的代碼
public RewardJoinType? RewardJoinType
{
get { return rewardJoinType; }
set { rewardJoinType = value; }
}
而這裏的枚舉本身
public enum RewardJoinType
{
Auto,
Manual
}
是因爲通過默認枚舉是Int32甚至t hough我有它可以爲空它不能夠投出一個空Int16?
我們處理的DBNull爲Int16的,像這樣已經在我們的讀者:
public short GetInt16()
{
columnIndex++;
return reader.IsDBNull(columnIndex) ? (short)0 : reader.GetInt16(columnIndex);
}
InvalidCastException在哪裏被拋出?哪一行代碼?以及它試圖從和來自哪裏? – thecoop 2009-10-14 13:43:28
已更新。它只會在異常中表示無效投射。我沒有得到內心的例外。往上看。 – PositiveGuy 2009-10-14 13:46:22
啊,我已經把這個領域作爲DB中的TinyInt。 – PositiveGuy 2009-10-14 13:51:48