CA2248: Forneça o argumento enum correto para Enum.HasFlag
Property | valor |
---|---|
ID da regra | CA2248 |
Título | Forneça o argumento enum correto para Enum.HasFlag |
Categoria | Utilização |
A correção está quebrando ou não quebrando | Sem quebra |
Habilitado por padrão no .NET 9 | Como sugestão |
Motivo
O tipo enum passado como um argumento para a chamada de HasFlag
método é diferente do tipo enum chamador.
Descrição da regra
O Enum.HasFlag
método espera que o enum
argumento seja do mesmo enum
tipo que a instância na qual o método é invocado. Se forem tipos diferentes enum
, uma exceção não tratada será lançada em tempo de execução.
Como corrigir violações
Para corrigir violações, use o mesmo tipo de enum 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 reprima violações desta regra.
Colabore connosco no GitHub
A origem deste conteúdo pode ser encontrada no GitHub, onde também pode criar e rever problemas e pedidos Pull. Para mais informações, consulte o nosso guia do contribuidor.