オブジェクト型のインスタンスobjについてobj.getType().IsArrayがtrueの時objを配列として扱いたく
object[] ary = (object[]) obj;
foreach (object o in ary) {
Console.WriteLine(o.ToString()); // などの処理
}
としたところobjがstring[]や自作クラス[]の場合はうまく動いたのですが
intなどのプリミティブ型の配列ではうまくいきませんでした。
>型 'System.Int32[]' のオブジェクトを型 'System.Object[]' にキャストできません。
以下の様に全てのプリミティブ型について分岐させるとうまくいったのですが、もっと良い方法はないでしょうか?
object[] ary;

if (obj.GetType().FullName == typeof(int[]).FullName) {
int[] tmp = (int[])obj;
ary = new object[tmp.Length];
for (int i = 0; i < tmp.Length; ) {
ary[i] = tmp[i];
}
} else if (obj.GetType().FullName == typeof(double[]).FullName) {
double[] tmp = (double[])obj;
ary = new object[tmp.Length];
for (int i = 0; i < tmp.Length; ) {
ary[i] = tmp[i];
}
} else {
ary = (object[])obj;
}