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

时间:2016-09-27 15:27:21

标签: c# arrays reflection

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

类型或命名空间名称`elementType'无法找到。您是否缺少using指令或程序集引用?

1 个答案:

答案 0 :(得分:1)

显然它不起作用,因为你提供的是一个变量(Type类型,而不是类型定义,这与此无关)。

Array类有一个方法可以根据需要创建数组:Array.CreateInstance(Type, int)

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