在运行时创建数组类型

Meh*_*taş 4 c# arrays reflection types reflection.emit

我想在运行时获得一个类型的"数组类型".我不需要数组的实例,只需要Type.我目前使用以下方法.

    private Type GetArrayType(Type elementType)
    {
        return Array.CreateInstance(elementType, 0).GetType();
    }
Run Code Online (Sandbox Code Playgroud)

没有创建数组实例有没有更好的解决方案?

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

Ani*_*Ani 9

是的,你可以使用Type.MakeArrayType.

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

private Type GetArrayType(Type elementType)
{
    return elementType.MakeArrayType();
}
Run Code Online (Sandbox Code Playgroud)