2016-09-27 89 views
0

我有一個FieldInfo,我知道它是一個數組,因此我使用它的值來聲明Array實例,並且還獲取數組元素的類型:如何用類型實例指定的類型元素創建一個數組

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 

類型或命名空間名稱'元素類型」不能被發現。你是否缺少using指令或程序集引用?

+0

我使用C#。對不起,如果我忘記包含這些信息。 – Cherno

回答

1

顯然,因爲不是一個類型定義您提供(一Type類型,在這裏無關緊要的)可變它不工作。

Array類有像你需要創建一個數組的方法:Array.CreateInstance(Type, int)

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

謝謝,你說得對。通過使用CreateInstance方法既可以用於新數組,也可以用於包含元素,我會根據需要進行操作。非常感謝你! – Cherno

相關問題