基于变量的类型转换

时间:2009-10-13 12:26:36

标签: c# comparison casting

我将如何进行以下操作...我有一个可以绑定到不同数据类型的控件... String,Int,Int32,DateTime等...但通常将结果存储到通用中“对象“数据类型。所以,我使用另一个字段来识别EXPECTED类型,例如..

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

为了进行比较,我现在必须强制执行预期格式的类型转换,例如

(DataBoundType)ChosenValue == (DataBoundType)TestAgainstThisValue;

我知道我可以放入一个开关,或者每种数据类型使用不同签名的重载函数,但是寻找一种更通用的方法来直接处理。

由于

4 个答案:

答案 0 :(得分:5)

您实际上并不需要单独的BoundDataType属性 - object.GetType()就足够了。

至于比较,大多数标准类型实现IComparable接口,可用于测试相等性。

答案 1 :(得分:0)

使用System.ComponentModel.TypeConverter - 类

答案 2 :(得分:0)

尝试

TestAgainstThisValue.GetType()

获取变量的类型

答案 3 :(得分:0)

您可以使用object.GetType()来获取变量的类型。

然后您可以使用Convert.ChangeType(object,type)进行转换。

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

这应该有效。