2009-10-13 93 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()); 

这应该工作。