任意の型の 2 つのオブジェクトを動的に比較できる汎用演算子メソッドを作成しています。例えば:
Object a = (int)5;
Object b = (long)7;
return a < b;
object が less than 演算子を提供しないため、これは明らかにコンパイルされません。オブジェクトをそれぞれの型にキャストすることは明らかに機能します。
ただし、実行時の型はわかりません。
.NET 4 を使用できれば (これは使用できません)、オブジェクトを動的にキャストでき、すべて問題ありません。しかし、私にはできないので、式を使用するか、考えられるすべての型と値のキャストを提供するコード生成が残っていると思います!
だから表現!
式を作成する場合、オブジェクトを正しい型にアンボックスする必要がありますが (簡単です)、数値型をいずれかのオペランドの最大値に昇格させる必要があります。プロモーションのルールは、C# 仕様に記載されています。
私の質問は、フレームワークに事前に作成されたプロモーション コードがあるかどうか、またはこれについて間違った方法で行っているかどうかです。
助けてくれてありがとう。
アップデート
答えてくれてありがとう。IComparable を使用することを考えていなかったことを認めなければなりません。なぜなら、このメソッドは数値以外にも使用されるからです (明示的には言及していませんが)。そうは言っても、両方のオブジェクトがインターフェイスを実装しているかどうかを確認し、実装している場合はそれを使用することができます。