C# 基于变量的类型转换

C# 基于变量的类型转换,c#,comparison,casting,C#,Comparison,Casting,我将如何进行以下工作。。。我有一个可以绑定到不同数据类型的控件。。。字符串、Int、Int32、DateTime等。。。但一般来说,结果存储在一个通用的“对象”数据类型中。因此,我使用另一个字段来标识预期的类型,例如 String BoundDataType = "System.String" // or System.Int32 or date/time, etc. object ChosenValue; 为了进行比较,我现在必须强制执行预期格式的类型转换,例如 (DataBoundTy

我将如何进行以下工作。。。我有一个可以绑定到不同数据类型的控件。。。字符串、Int、Int32、DateTime等。。。但一般来说,结果存储在一个通用的“对象”数据类型中。因此,我使用另一个字段来标识预期的类型,例如

String BoundDataType = "System.String"   // or System.Int32 or date/time, etc.
object ChosenValue;
为了进行比较,我现在必须强制执行预期格式的类型转换,例如

(DataBoundType)ChosenValue == (DataBoundType)TestAgainstThisValue;
我知道我可以把它放在一个开关中,或者重载每个数据类型具有不同签名的函数,但是我正在寻找一种更通用的方法来直接处理


谢谢

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


至于比较,大多数标准类型都实现了接口,可以用来测试是否相等。

实际上不需要单独的
BoundDataType
属性-
对象。GetType()
就足够了


至于比较,大多数标准类型都实现了接口,可以用来测试是否相等。

使用
系统.ComponentModel.TypeConverter
-Class

使用
系统.ComponentModel.TypeConverter
-Class

试试看

TestAgainstThisValue.GetType()

要获取变量的类型,请尝试

TestAgainstThisValue.GetType()

要获取变量的类型,可以使用object.GetType()获取变量的类型

然后可以使用Convert.ChangeType(对象,类型)进行转换

object conv = Convert.ChangeType(ChosenValue,ChosenValue.GetType());
这应该是可行的。

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

然后可以使用Convert.ChangeType(对象,类型)进行转换

object conv = Convert.ChangeType(ChosenValue,ChosenValue.GetType());
这应该行得通