2016-07-19 2 views
0

'parameterType'の型に変換するサブ配列を取得しようとしています。 'para'はオブジェクトの配列です。無効なキャスト例外が発生しています。InvalidCastExceptionを解決するには

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

答えて

0

キャストしようとしている複数のオブジェクトを選択しています。

object dest = para.Skip(k).Take(size).Cast<object>();はのようにキャスト/変更できません。IEnumerable<object>が返されます。

あなたはこれを試してみてください:

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

はい、私は一つの型に複数のオブジェクトをキャストしようとしています。例えばobject [] = 11,22,33,44であり、パラメータの型はint32です。答えは1122344になるはずです。これには他の解決策がありますか? –

関連する問題