2010-01-12 90 views
0

我們有將對象轉換爲短的代碼。System.InvalidCastException:指定的轉換無效僅在某些機器上

type.BusinessAreaID = (short)caType.credit_assessment_biz_areaReference.EntityKey.EntityKeyValues[0].Value; 

該對象具有2

此代碼(單元測試)的值作品創建該代碼中的顯影劑的PC機上。但是,我們在構建服務器和其他開發PC上獲得了無效的強制轉換異常。

BusinessAreaID是short類型的。

該Dll也在GAC中,我們已更新,以便它應該是相同的。

任何人有任何想法。

+0

假設對象在拋出異常的機器上沒有值2。 – 2010-01-12 10:47:49

+0

它是從一個單元測試運行,所以這個值總是2,也調試過,以確保 – 2010-01-12 10:49:02

回答

6

您不能將值取消裝箱到不同的類型。例如,這個工程:

short x = 2; 
object y = (object)x; 
short z = (short)y; 

但這並不:

int x = 2; 
object y = (object)x; 
short z = (short)y; // InvalidCastException 

確定存儲在caType...lues[0].Valueshort類型的?

+0

值是類型對象 – 2010-01-12 10:47:09

+1

這就是屬性的類型。但正如你在我的例子中可以看到的那樣,你可以在'object'類型的變量中存儲'short'類型的值。 – dtb 2010-01-12 10:48:22

相關問題