CA2248: Fornecer o argumento de enumeração correto para Enum.HasFlag
Property | Valor |
---|---|
ID da regra | CA2248 |
Título | Fornecer o argumento de enumeração correto para Enum.HasFlag |
Categoria | Usage |
Correção interruptiva ou sem interrupção | Sem interrupção |
Habilitado por padrão no .NET 8 | Como sugestão |
Causa
O tipo de enumeração transmitido como um argumento para a chamada de método HasFlag
é diferente do tipo de enumeração de chamada.
Descrição da regra
O método Enum.HasFlag
espera que o argumento enum
seja do mesmo tipo enum
que a instância na qual o método é invocado. Se forem tipos enum
diferentes, uma exceção sem tratamento será gerada no runtime.
Como corrigir violações
Para corrigir violações, use o mesmo tipo de enumeração no argumento e no chamador:
public class C
{
[Flags]
public enum MyEnum { A, B, }
[Flags]
public enum OtherEnum { A, }
public void Method(MyEnum m)
{
m.HasFlag(OtherEnum.A); // Enum types are different, this call will cause an `ArgumentException` to be thrown at run time
m.HasFlag(MyEnum.A); // Valid call
}
}
Quando suprimir avisos
Não suprima as violações dessa regra.
Colaborar conosco no GitHub
A fonte deste conteúdo pode ser encontrada no GitHub, onde você também pode criar e revisar problemas e solicitações de pull. Para obter mais informações, confira o nosso guia para colaboradores.