Partilhar via


EnumConverter valida tipos registrados para ser enum

EnumConverter é um conversor de tipo que converte de e para um enum tipo. EnumConverter agora valida que o tipo a ser registrado é de um enum tipo.

Comportamento anterior

Anteriormente, o tipo a ser registrado não era validado para ser um enum tipo.

Novo comportamento

A partir do .NET 9, EnumConverter lança um ArgumentException se o tipo a ser convertido não for um enum tipo. Quaisquer classes derivadas de EnumConverter devem também respeitar este requisito.

Versão introduzida

.NET 9 Visualização 7

Tipo de mudança de rutura

Esta mudança é uma mudança comportamental.

Razão para a alteração

É lógico impor o requisito que EnumConverter deve ser usado para converter apenas para tipos de e enum para eles. Provavelmente foi um descuido que esse requisito não tenha sido adicionado antes.

No entanto, o principal fator impulsionador para esta mudança foi para fins de corte. O corte não corta enum tipos, mas o uso EnumConverter para enum tipos requer DynamicallyAccessedMembersAttribute anotação para um enum tipo. Isso significa que o uso EnumConverter gera avisos de corte desnecessários. Uma alteração recente removeu o requisito de anotação. Parte da razão para essa mudança foi impor que EnumConverter só fosse usado com enums.

Não há solução fácil se um EnumConverter é usado para converter de e para um não-tipoenum .

APIs afetadas