Type.GetType 会针对所有无效元素类型引发异常

现在,Type.GetType(String) 会针对具有无效元素类型的所有类型(包括 byref-of-byref)引发 TypeLoadException。 以前,此方法会针对某些极端情况返回 null

旧行为

对于大多数具有无效元素类型的类型,Type.GetType(String) 都会引发 TypeLoadException,但少数特殊情况(例如 byref-of-byref)除外。 例如,在 .NET 7 中,以下代码返回 null

Type.GetType("System.Object&&")

新行为

Type.GetType(String) 会针对具有无效元素类型的所有类型(包括 byref-of-byref)引发 TypeLoadException。 例如,以下代码(在 .NET 7 中返回 null)在 .NET 8 中引发异常:

Type.GetType("System.Object&&")

引入的版本

.NET 8

中断性变更的类型

此更改为行为更改

更改原因

.NET 有多个类型-名称分析程序,它们在这样的极端情况下有不同的行为并不罕见。 行为在以下方面是统一的:

  • 如果未找到具有给定名称的类型,则返回 null
  • 如果类型无效,则引发 TypeLoadException。 “无效”类型包括违反泛型约束的类型或参数类型的无效组合。

如果代码在这些极端情况下依赖于 null 返回值,请将其更改为捕获 TypeLoadException

受影响的 API