如果给定两种类型(类型 a,类型 b),是否有任何“好”的方法来确定这两种类型是否可以进行比较、求和等?
我在想如果类型实现IConvertible
,可以将两者都转换为让我们说十进制并执行“ Convert.ToDecimal(a) > Convert.ToDecimal(b)
”?
我正在构建一个表达式评估器,并且希望能够使用任何类型的对象,因此需要知道一个类型是否可以与另一种类型进行比较(它不必在两边都是相同的类型。例如。double > int
)
如果给定两种类型(类型 a,类型 b),是否有任何“好”的方法来确定这两种类型是否可以进行比较、求和等?
我在想如果类型实现IConvertible
,可以将两者都转换为让我们说十进制并执行“ Convert.ToDecimal(a) > Convert.ToDecimal(b)
”?
我正在构建一个表达式评估器,并且希望能够使用任何类型的对象,因此需要知道一个类型是否可以与另一种类型进行比较(它不必在两边都是相同的类型。例如。double > int
)
您是否可以添加到类型取决于您的编程语言的绑定规则。特别是隐式转换和重载决议。
从 .net 3.5 开始,“Expression”类和相关的辅助类可以做到这一点。 .NET 泛型中重载运算符约束的解决方案