2009-10-13 119 views
0

我將如何處理以下內容...我有一個可以綁定到不同數據類型的控件... String,Int,Int32,DateTime等...但通常結果是存儲到通用的「對象」數據類型中。所以,我用另一個字段來標識預期的類型,如..基於變量的類型轉換

String BoundDataType = "System.String" // or System.Int32 or date/time, etc. 
object ChosenValue; 

爲了便於比較,我現在不得不執行預期的格式的類型轉換,如

(DataBoundType)ChosenValue == (DataBoundType)TestAgainstThisValue; 

我知道我可以放在一個開關中,或者每個數據類型使用不同的Signatures重載函數,但是尋找更直接處理的通用方法。

感謝

回答

5

你實際上並不需要一個單獨的屬性BoundDataType - object.GetType()就足夠了。

至於比較,大多數標準類型實現了IComparable接口,它可以用來測試相等性。

0

使用System.ComponentModel.TypeConverter -Class

0

嘗試

TestAgainstThisValue.GetType()

得到的變量

0

你可以使用object.GetType()來獲得類型的類型的變量。

然後,您可以使用Convert.ChangeType(object,type)進行轉換。

object conv = Convert.ChangeType(ChosenValue,ChosenValue.GetType()); 

這應該工作。