Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| 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 10 | 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 diferentes enum , uma exceção sem tratamento será gerada em 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 runtime
m.HasFlag(MyEnum.A); // Valid call
}
}
Quando suprimir avisos
Não suprima as violações dessa regra.