我可以通过反射和调用获取强制转换操作符(或者如果这个操作有更好的名称)吗? 这是主要问题,如果是,它解决了我的问题。
但如果有人知道以下的另一种解决方案:
我有很多对象变量(运行时未知数量),每个都有不同的类型,但它们都是数字(double,int,short)。
另一方面,我有相同数量的双变量,需要比较各自的值。
object[] Value1; //this can be double, short or int, only known at runtime.
double[] Value2;
//I need simply to do:
(for int i = 0; i < Value1.Length, i++)
{
(if Value1[i] == Value2[i]) //here's the problem
//the comparison always return false, because of different types
....
我尝试了很多东西,包括通过反射调用的“CompareTo”方法,但它要求de object vars与包含调用方法的实例的类型相同。 (不能从double调用并传递int参数,也不能从int调用并传递double参数)
所以,如果我可以施展它们: 一种方法是从双重到未知类型(为此我必须使用一些反射) 另一种方式是从对象到未知类型的两步投射,从那里到双重投射。
限制:
dynamic不是一个选项(旧框架)
Value1项目从外部不可更改的方法单独“作为对象”。
答案 0 :(得分:1)
将Value1
更改为double[]
。如果您要object
加入short
,int
,double
等等,请使用Convert.ToDouble(value)
,或者如果您有已知short
或int
,它将隐式转换为double
。然后可以将这些与double
中的Value2
进行比较。