Jef*_*eff 2 c# reflection iequalitycomparer
我想在运行时使用反射比较两个值.我正在使用Comparer.Default.Compare(x,y),但我已经意识到这还不够.假设我想比较一个double和一个(1.0 == 10).Comparer.Default将抛出异常,因为它坚持两个值必须是相同的类型(double).但是,存在显式转换,这正是我想要使用的.
那么,为什么我不能只使用Convert.ChangeType?以1.25> 1(双>整数)为例.如果我在1.25上尝试Convert.ChangeType(1.25,typeof(int)),我将得到1,并且当真正的1.25 IS> 1时,上面的断言将失败.
那么,有人可以建议一种调用类型定义的显式比较(如果存在)的方法吗?
谢谢.
你在使用C#4和.NET 4吗?如果是这样,使用动态类型非常容易:
dynamic x = firstValue;
dynamic y = secondValue;
if (x > y) // Or whatever
Run Code Online (Sandbox Code Playgroud)
编译器会为您执行所有适当的转换.
| 归档时间: |
|
| 查看次数: |
762 次 |
| 最近记录: |