CA2248: Proporcionar el argumento enum correcto para Enum.HasFlag
Propiedad | Value |
---|---|
Identificador de la regla | CA2248 |
Título | Proporcionar el argumento enum correcto para Enum.HasFlag |
Categoría | Uso |
La corrección es problemática o no problemática | Poco problemático |
Habilitado de forma predeterminada en .NET 8 | Como sugerencia |
Causa
El tipo de enumeración que se pasa como argumento a la llamada de método HasFlag
es diferente del tipo de enumeración que realiza la llamada.
Descripción de la regla
El método Enum.HasFlag
espera que el argumento enum
sea del mismo tipo enum
que la instancia en la que se invoca el método. Si se trata de tipos enum
diferentes, se producirá una excepción no controlada en tiempo de ejecución.
Cómo corregir infracciones
Para corregir las infracciones, use el mismo tipo de enumeración en el argumento y el autor de la llamada:
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
}
}
Cuándo suprimir las advertencias
No suprima las infracciones de esta regla.
Colaborar con nosotros en GitHub
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.