2016-09-27 2 views
0

私はFieldInfoを持っています。配列を知っていますので、Arrayインスタンスを宣言し、配列要素の型を取得します。Typeインスタンスで指定された型の要素を持つ配列を作成する方法

void Test(object baseInstance, FieldInfo baseInstanceField) { 
    Array a = (Array)baseInstanceField.GetValue(baseInstance); 
    Type elementType = TypeSystem.GetElementType(baseInstance.GetType()); 
} 

ここで、リフレクションを使用して特定の長さのタイプelementTypeの新しい配列を初期化したいとします。これはどうすればいいですか?私は後でこの新しい配列の要素にアクセスする必要があります。

elementType[] newArray = new elementType[34]; //doesn't work 

型または名前空間名 'をelementType」が見つかりませんでした。 usingディレクティブまたはアセンブリ参照がありませんか?

+0

Arrayクラスはあなたが必要とするように配列を作成する方法があります。私はその情報を含めるのを忘れた場合は申し訳ありません。 – Cherno

答えて

1

明らかに型定義の代わりに、変数(Typeタイプのものですが、これはここでは無関係です)が提供されているため動作しません。 Array.CreateInstance(Type, int):私はC#を使用してい

var newArray = Array.CreateInstance(elementType, 34); 
+0

ありがとうございます。新しい配列と要素を含めるためにCreateInstanceメソッドを使うことで、私は自分が望むことをすることができました。どうもありがとうございました! – Cherno

関連する問題