CA2248: укажите правильный аргумент перечисления для Enum.HasFlag
Свойство | Значение |
---|---|
Идентификатор правила | CA2248 |
Заголовок | укажите правильный аргумент enum для Enum.HasFlag |
Категория | Использование |
Исправление является критическим или не критическим | Не критическое |
Включен по умолчанию в .NET 9 | Как предложение |
Причина
Тип перечисления, переданный в качестве аргумента вызову метода HasFlag
, отличается от вызывающего типа перечисления.
Описание правила
Метод Enum.HasFlag
принимает аргумент enum
того же типа enum
, что и экземпляр, в котором вызывается метод. Если это разные типы enum
, во время выполнения будет создано необработанное исключение.
Устранение нарушений
Чтобы устранить нарушения, используйте один и тот же тип перечисления как для аргумента, так и для вызывающего объекта:
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
}
}
Когда лучше отключить предупреждения
Не отключайте предупреждения для этого правила.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.