Type.GetType がすべての無効な要素型に対して例外をスローする

Type.GetType(String) で、byref の byref を含め、無効な要素型を持つ "すべての" 型に対して TypeLoadException がスローされるようになりました。 以前は、このメソッドで一部のコーナー ケースに対して null が返されていました。

以前の動作

Type.GetType(String) で、無効な要素型を持つほとんどの型に対して TypeLoadException がスローされていましたが、byref の byref などの少数のコーナー ケースは例外でした。 たとえば次のコードの場合、.NET 7 では null が返されていました。

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

新しい動作

Type.GetType(String) で、byref の byref を含め、無効な要素型を持つすべての型に対して TypeLoadException がスローされます。 たとえば次のコードの場合 (.NET 7 では null が返されていました)、.NET 8 では例外がスローされます。

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

導入されたバージョン

.NET 8

破壊的変更の種類

この変更は、動作変更です。

変更理由

.NET には複数の型名パーサーがあり、このようなまれなケースで動作が異なるのは珍しいことではありませんでした。 以下の点で動作が統一されました。

  • 指定した名前の型が見つからない場合は、null が返されます。
  • 型が無効な場合は、TypeLoadException がスローされます。 "無効な" 型には、ジェネリック制約違反またはパラメーター型の構成が無効な型が含まれます。

コードがこれらのコーナー ケースの null 戻り値に依存している場合は、代わりに TypeLoadException をキャッチするように変更します。

影響を受ける API