我想在运行时使用反射比较两个值。我为此使用了 Comparer.Default.Compare(x,y),但我开始意识到这还不够。假设我想将双精度与单精度进行比较(1.0 == 10)。Comparer.Default 将抛出异常,因为它坚持两个值必须是相同的类型(双精度)。但是,为此存在显式转换,这正是我想要使用的。
那么,为什么我不能只使用 Convert.ChangeType?以 1.25 > 1 (double > integer) 为例。如果我在 1.25 上尝试 Convert.ChangeType(1.25,typeof(int)),我将得到 1,而上面的断言将失败,而实际上 1.25 IS > 1。
那么,有人可以建议一种调用类型定义的显式比较(如果存在)的方法吗?
谢谢。