如何解决InvalidCastException

时间:2016-07-19 07:32:51

标签: c# exception casting changetype

我试图让一个子阵列转换为'parameterType'中的类型。 'para'是一个对象数组。我收到了无效的强制转换异常。

我是c#的新手,无法解决这个问题。

 object[] param_values = new object[parameterType.Length];
 int k,q = 0;
 int size;
 foreach (ParameterInfo p in parameterType)
 {
     size = Marshal.SizeOf(p.ParameterType);
     object dest = para.Skip(k).Take(size).Cast<object>();
     param_values[q] = Convert.ChangeType(dest, p.ParameterType); // exception occurs here
     k = k + size;
     q++;
}

1 个答案:

答案 0 :(得分:0)

您正在选择要投射的多个对象。

object dest = para.Skip(k).Take(size).Cast<object>();会返回IEnumerable<object>,您无法对其进行转换/更改,例如Int32

你可以试试这个:

object[] param_values = new object[parameterType.Length];
int q = 0;
foreach (object p in para)
{
    param_values[q] = Convert.ChangeType(p, parameterType[q]); 
    q++;
}