在运行时创建数组类型

4
我希望能在运行时获取“数组类型”的类型信息。我不需要数组的实例,只需要 Type 对象。我目前使用以下方法。
    private Type GetArrayType(Type elementType)
    {
        return Array.CreateInstance(elementType, 0).GetType();
    }

有没有更好的解决方案,而不需要创建数组实例?

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

1个回答

10

是的,您可以使用Type.MakeArrayType

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

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

谢谢!看来我需要休息一下……我无法想象自己如何迷失在数组和类型的静态方法中,从未考虑过实例方法(: - Mehmet Ataş
我认同,在这些制造方法中有一些选择,例如instance/static确实令人困惑。 - Ani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接