Поделиться через


CA1856: неправильное использование атрибута ConstantExpected

Свойство Значение
Идентификатор правила CA1856
Заголовок Неправильное использование атрибута ConstantExpected
Категория Производительность
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 8 Как ошибка

Причина

Атрибут ConstantExpectedAttribute не применяется правильно к параметру.

Описание правила

Это правило помечает неправильное использование атрибута ConstantExpectedAttribute , например:

  • Значение Min или Max значение несовместимо с типом параметра.
  • Тип параметра не поддерживается для атрибута ConstantExpectedAttribute .
  • Перевернутые Min значения и Max значения.
  • Значение Min или Max значение не вписывается в границы значения параметра.

Устранение нарушений

Исправьте код, как указано в сообщении об ошибке, которое вы получаете.

Пример

В следующем фрагменте кода показаны нарушения CA1856:

using System.Diagnostics.CodeAnalysis;

// Violation - value not compatible with parameter type.
static void M1([ConstantExpected(Min = "a")] char val) { }
// Violation - unsupported type for attribute.
static void M2([ConstantExpected] decimal val) { }
// Violation - Min and Max values are inverted.
static void M3([ConstantExpected(Max = 0, Min = 1)] int val) { }
// Violation - value does not fit within the parameter value bounds.
static void M4([ConstantExpected(Min = long.MinValue)] int val) { }

Следующий фрагмент кода исправляет нарушения.

using System.Diagnostics.CodeAnalysis;

static void M1([ConstantExpected(Min = 'a')] char val) { }
static void M2(decimal val) { }
static void M3([ConstantExpected(Min = 0, Max = 1)] int val) { }
static void M4([ConstantExpected(Min = int.MinValue)] int val) { }

Когда лучше отключить предупреждения

Нарушение этого правила указывает на ошибку в коде и всегда должно быть исправлено.