2016-07-19 15 views
0

Ich versuche, ein Sub-Array in den Typ in "ParameterType" zu konvertieren. 'para' ist eine Anordnung von Objekten. Ich erhalte eine ungültige Cast-Ausnahme.Wie zu lösen InvalidCastException

Ich bin neu zu C# und nicht in der Lage, dies zu lösen.

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++; 
} 

Antwort

0

Sie wählen mehrere Objekte aus, die Sie zu übertragen versuchen.

object dest = para.Skip(k).Take(size).Cast<object>(); gibt eine IEnumerable<object> zurück und Sie können nicht umwandeln/ändern Sie es, zum Beispiel ein Int32.

Sie könnten versuchen, diese:

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

Ja, ich mehrere Objekte zu einer einzigen Art zu werfen versuchen. zum Beispiel object [] = 11, 22, 33, 44. und der Parametertyp ist int32. dann sollte die Antwort 1122344 lauten. Gibt es dafür eine andere Lösung? –