通过反射获取Explicit Cast运算符

时间:2013-03-19 13:09:03

标签: c# reflection casting

我可以通过反射和调用获取强制转换操作符(或者如果这个操作有更好的名称)吗? 这是主要问题,如果是,它解决了我的问题。

但如果有人知道以下的另一种解决方案:

我有很多对象变量(运行时未知数量),每个都有不同的类型,但它们都是数字(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项目从外部不可更改的方法单独“作为对象”。

1 个答案:

答案 0 :(得分:1)

Value1更改为double[]。如果您要object加入shortintdouble等等,请使用Convert.ToDouble(value),或者如果您有已知shortint,它将隐式转换为double。然后可以将这些与double中的Value2进行比较。