リフレクションを使用して、実行時に2つの値を比較したいと思います。これにはComparer.Default.Compare(x、y)を使用していましたが、これでは不十分であることに気付きました。ダブルとシングルを比較したいとしましょう(1.0 == 10)。Comparer.Defaultは、両方の値が同じタイプ(double)でなければならないと主張するため、例外をスローします。ただし、これには明示的な変換が存在します。これは、実際に使用したいものです。
では、なぜConvert.ChangeTypeだけを使用できないのでしょうか。1.25> 1(double> integer)の場合を考えてみましょう。1.25でConvert.ChangeType(1.25、typeof(int))を試してみると、1が得られ、実際に1.25 IS> 1の場合、上記のアサーションは失敗します。
それで、誰かがタイプが定義する明示的な比較(存在する場合)を呼び出す方法を提案できますか?
ありがとう。