我有一個System.Type存儲在一個變量。我希望將對象的類型更改爲此類型。Convert.ChangeType到System.Type
我有以下代碼,但無法獲取類型更改爲類型。
理想情況下,我想:var intTest3 =(MyType)Convert.ChangeType(test, MyType);
返回一個int,當:MyType is a System.Int32
,這裏是我迄今爲止的工作 - 我要去哪裏錯了?
// object to cast to int
object test = 1;
// INT32 type
Type MyType = typeof(System.Int32);
// explicit type int WORKS
var intTest = (int)Convert.ChangeType(test, typeof(Int32));
// explicit type to int WORKS
var intTest2 = (int)Convert.ChangeType(test, MyType);
// explicit type to int WORKS - but as object
object intTest3 = Convert.ChangeType(test, MyType);
// cast to my type DOESNT WORK
var intTest3 =(MyType)Convert.ChangeType(test, MyType);
謝謝!
這不是對問題的最好解釋,特別是因爲類型是硬編碼的。 – cjk 2010-03-01 13:52:52
我正在翻譯2個API之間的數據。一個API提供一個包含數據的對象和一個包含這些數據的System.Type的變量。這些是在編譯時設置的。 其他API要求任何輸入是「正確的類型」 - 所以我不能只發送對象,但是,如果對象的類型是「Int32」,那麼它需要一個Int32變量。 所以我想這個問題是「如何將一個對象轉換爲一種類型,這隻在運行時才知道」。 – bob 2010-03-01 14:16:56
@bob:你會期待這樣的演員要做什麼?你會如何使用結果?假設「var」不存在,因爲它在這裏不是真正相關的,否則你將如何聲明intTest3?你可以使用泛型方法嗎? (如果需要的話,可以讓你在'typeof(T)'中傳遞給'T'到'ConvertType')。如果你可以發佈更完整的代碼來使用你想要的任何東西,那將會有幫助。 – 2010-03-01 14:26:36