如何使用给定的ElementType创建Array类型的实例?

时间:2011-08-07 11:19:17

标签: c# .net arrays serialization reflection

如何创建一个表示具有给定元素类型的数组类型的类型对象?

Type t = MakeArrayType(elementType);  // How?

这样

Assert(t.GetElementType() == elementType);

我可以创建我所请求数组的虚拟实例,然后从那里获取类型。但我想知道是否有办法在不先创建实例的情况下获取类型?

object myArrayInstance = Array.CreateInstance(elementType, 0);
Type t = myArrayInstance.GetType();   // This is the desired type.

1 个答案:

答案 0 :(得分:3)

如果t引用Type,那么t.GetType()显然是typeof(Type)或子类型 - 而不是typeof(Array)

但是,我怀疑你想要Type.MakeArrayType

Type arrayType = elementType.MakeArrayType();