c# - 当 typeName 表示大小无效的数组类型时,Type.GetType() 抛出

标签 c# reflection

System.Type.GetType(string, bool) 的文档说,当 throwOnErrortrue 时抛出 TypeLoadException 并且:

{...} typeName represents an array type with an invalid size

我想知道,这是什么意思,怎么可能? 与非托管代码或基于反射的数组相关吗? 当我想通过名称获取 Type 时,是否需要担心这种情况?

有人知道这里发生了什么吗?

最佳答案

正如 Flydog57 提到的,

Type.GetType("System.Int32[,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,]")

将产生异常,因为数组的最大维数是 32。它并不真正对应于文档所说的

typeName represents an array type with an invalid size

但我认为有足够的证据表明我们正在寻找的正是这种情况:

  • 它完全产生 TypeLoadException 并且不符合任何其他描述的情况
  • C# 中唯一听起来像“具有大小的数组类型”的是 fixed size buffer ,但事实并非如此。

所以,我很确定文档中存在错误,正确的变体应该听起来像

typeName represents an array type with an invalid dimension size

关于c# - 当 typeName 表示大小无效的数组类型时,Type.GetType() 抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51680341/

相关文章:

java - 在 Eclipse 上调试 CGLIB FastClass 时出错

c# - 通过 MethodInfo 调用方法

c# - 无法将类型 void 隐式转换为 List

c# - 使用 csharp-mode 和 Mono

c# - 如何将 IDbTransactions 包装在 TransactionScope 中

c# - Cecil - 获取定义的属性属性

c# - 使用 Selenium 从表中获取数据

c# - 如何在边框后绑定(bind)我的文本?

powershell - 您如何以编程方式获取所有常用参数的列表?

java - 如何正确加载实现参数化接口(interface)的类?