Type.GetType gera exceção para todos os tipos de elemento inválidos

Type.GetType(String) agora gera um TypeLoadException para todos os tipos com um tipo de elemento inválido, incluindo byref-of-byref. Anteriormente, esse método retornava null para alguns casos isolados.

Comportamento anterior

Type.GetType(String) gerou um TypeLoadException para a maioria dos tipos com um tipo de elemento inválido, exceto alguns casos isolados, como byref-of-byref. Por exemplo, o seguinte código retornou null no .NET 7:

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

Novo comportamento

Type.GetType(String) gera um TypeLoadException para todos os tipos com um tipo de elemento inválido, incluindo byref-of-byref. Por exemplo, o código a seguir (que retornou null no .NET 7) gera uma exceção no .NET 8:

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

Versão introduzida

.NET 8

Tipo de alteração interruptiva

Esta é uma alteração comportamental.

Motivo da alteração

O .NET tinha vários analisadores de nome de tipo e não era incomum que eles tivessem um comportamento diferente em casos de canto como esse. O comportamento foi unificado em:

  • Se o tipo com o nome fornecido não for encontrado, retorne null.
  • Se o tipo for inválido, gere TypeLoadException. Os tipos "inválidos" incluem tipos com violações de restrição genéricas ou composição inválida de tipos de parâmetro.

Se o código dependesse de um valor null retornado para esses casos isolados, altere-o para capturar um TypeLoadException em vez disso.

APIs afetadas