长话短说,我在C#中拥有一个函数,该函数具有两个表示潜在原始类型(不包括布尔值)的“对象”(是类!),我想对其进行测试。
这是一个更好地解释它的代码:
public void Compare(object value1, object value2) {
if(value1 < value2)
//do something
if(value1 > value2)
// do something else...
}
但是,您可能知道这是不可能的...有办法吗?
最佳答案
您可以通过将两个对象都投射到dynamic
来完成此操作。这将导致运行时确定如何比较两个对象而不是编译器。这样,比较功能可以与使<
和>
运算符重载的任何对象(包括基元)一起执行。
public void Compare(object value1, object value2) {
if ((dynamic)value1 < (dynamic)value2)
// do something
if ((dynamic)value1 > (dynamic)value2)
// do something else...
}