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.
Ação recomendada
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
- GetType(String)
- GetType(String, Boolean)
- GetType(String, Boolean, Boolean)
- GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)
- GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)
- GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de