CA1856 : Utilisation incorrecte de l’attribut ConstantExpected

Propriété Value
Identificateur de la règle CA1856
Titre Utilisation incorrecte de l’attribut ConstantExpected
Catégorie Performances
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 Comme erreur

Cause

L’attribut ConstantExpectedAttribute n’est pas appliqué correctement à un paramètre.

Description de la règle

Cette règle signale les utilisations incorrectes de l’attribut ConstantExpectedAttribute, par exemple :

  • La valeur Min ou Max n’est pas compatible avec le type de paramètre.
  • Le type de paramètre n’est pas pris en charge pour l’attribut ConstantExpectedAttribute.
  • Les valeurs Min et Max sont inversées.
  • La valeur Min ou Max ne correspond pas aux limites de valeur du paramètre.

Comment corriger les violations

Corrigez votre code comme indiqué par le message d’erreur spécifique que vous recevez.

Exemple

L’extrait de code suivant montre des violations de 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) { }

L’extrait de code suivant corrige les violations :

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) { }

Quand supprimer les avertissements

Une violation de cette règle indique une erreur dans votre code et doit toujours être corrigée.