如何用类型实例指定的类型元素创建一个数组

问题描述:

我有一个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

显然,因为不是一个类型定义您提供(一Type类型,在这里无关紧要的)可变它不工作。

Array类有像你需要创建一个数组的方法:Array.CreateInstance(Type, int)

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

谢谢,你说得对。通过使用CreateInstance方法既可以用于新数组,也可以用于包含元素,我会根据需要进行操作。非常感谢你! – Cherno