我正在创建一个可以动态比较任何类型的两个对象的通用运算符方法。例如:
Object a = (int)5;
Object b = (long)7;
return a < b;
现在这显然不会编译,因为 object 不提供小于运算符。将对象转换回它们各自的类型显然会起作用。
但是我不知道运行时的类型。
如果我可以使用 .NET 4(我不能),那么我可以将对象转换为动态的,一切都会好起来的。但是,由于我不能,我相信我只剩下使用表达式的代码生成,或者为每种可能的类型和值提供强制转换!
所以表情!
如果我要创建一个表达式,我需要将对象拆箱为正确的类型(简单),但随后我需要将任何数值类型提升为任一操作数中的最大值。升级规则记录在 C# 规范中。
我的问题是,框架中是否有任何预先编写的促销代码,或者,我是否以错误的方式处理这个问题!
谢谢您的帮助。
更新
感谢您的回答。我必须承认我并没有考虑使用 IComparable,因为该方法将用于数字之外(尽管我没有明确提及)。话虽如此,我可能会检查两个对象是否都实现了接口并在它们实现时使用它。