我有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指令或程序集引用?
答案 0 :(得分:1)
显然它不起作用,因为你提供的是一个变量(Type
类型,而不是类型定义,这与此无关)。
Array
类有一个方法可以根据需要创建数组:Array.CreateInstance(Type, int)
:
var newArray = Array.CreateInstance(elementType, 34);