【问题标题】:Creating Array Type at runtime在运行时创建数组类型
【发布时间】:2013-02-01 07:04:52
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# arrays reflection types reflection.emit


    【解决方案1】:

    是的,您可以使用Type.MakeArrayType

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

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

    【讨论】:

    • 谢谢!好像我需要休息一下......我不知道我是如何迷失在 Array 和 Type 的静态方法中并且从未考虑过实例方法(:
    • 我同意这些类型的实例化/静态方法的选择非常令人困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多