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