在运行时创建数组类型

时间:2013-02-16 10:42:25

标签: c# arrays reflection types reflection.emit

我想在运行时获取类型的'数组类型'。我不需要数组的实例,只需要Type。我目前使用以下方法。

    private Type GetArrayType(Type elementType)
    {
        return Array.CreateInstance(elementType, 0).GetType();
    }

如果没有创建数组实例,还有更好的解决方案吗?

注意:我无法使用Type.GetType(elementType.FullName + "[]"),因为我在Reflection.Emit创建运行时的元素类型。根据{{​​3}},它需要将动态程序集保存在磁盘上,我不想这样做。

1 个答案:

答案 0 :(得分:8)

是的,您可以使用Type.MakeArrayType

  

返回表示一维数组的Type对象   当前类型,下限为零。

private Type GetArrayType(Type elementType)
{
    return elementType.MakeArrayType();
}