CA1700 : Ne nommez pas les valeurs enum 'réservé'CA1700: Do not name enum values 'Reserved'

TypeNameTypeName DoNotNameEnumValuesReservedDoNotNameEnumValuesReserved
CheckIdCheckId CA1700CA1700
CategoryCategory Microsoft.NamingMicrosoft.Naming
Modification avec ruptureBreaking Change RuptureBreaking

CauseCause

Le nom d’un membre d’énumération contient le mot « réservés ».The name of an enumeration member contains the word "reserved".

Description de la règleRule description

Cette règle suppose qu'un membre de l'énumération dont le nom contient le terme "reserved" n'est pas utilisé actuellement, mais constitue un espace réservé à renommer ou à supprimer dans une version ultérieure.This rule assumes that an enumeration member that has a name that contains "reserved" is not currently used but is a placeholder to be renamed or removed in a future version. Renommer ou supprimer un membre constitue une modification avec rupture.Renaming or removing a member is a breaking change. Vous ne devriez pas aux utilisateurs d’ignorer un membre, car son nom contient « réservés », ni compter sur les utilisateurs de lire ou de vous conformer à la documentation.You should not expect users to ignore a member just because its name contains "reserved", nor can you rely on users to read or abide by documentation. En outre, étant donné que les membres réservés apparaissent dans les explorateurs d’objets et des environnements de développement intégré intelligents, ils peuvent provoquer confusion sur les membres sont réellement utilisés.Furthermore, because reserved members appear in object browsers and smart integrated development environments, they can cause confusion about which members are actually being used.

Au lieu d’utiliser un membre réservé, ajoutez un nouveau membre à l’énumération dans la version futures.Instead of using a reserved member, add a new member to the enumeration in the future version. Dans la plupart des cas l’ajout du nouveau membre n’est pas une modification avec rupture, tant que l’ajout ne provoque pas les valeurs des membres d’origine à modifier.In most cases the addition of the new member is not a breaking change, as long as the addition does not cause the values of the original members to change.

Un nombre limité de cas de l’ajout d’un membre est une modification avec rupture, même si les membres d’origine conservent leurs valeurs d’origine.In a limited number of cases the addition of a member is a breaking change even when the original members retain their original values. Principalement, le nouveau membre ne peut pas être retourné à partir de chemins de code existant sans arrêter les appelants qui utilisent une switch (Select dans Visual BasicVisual Basic) instruction sur la valeur de retour qui comprend la liste intégrale des membres et qui lève une exception dans le cas par défaut.Primarily, the new member cannot be returned from existing code paths without breaking callers that use a switch (Select in Visual BasicVisual Basic) statement on the return value that encompasses the whole member list and that throw an exception in the default case. Un problème secondaire est que le code client peut ne pas gérer le changement de comportement à partir de méthodes de réflexion comme System.Enum.IsDefined.A secondary concern is that client code might not handle the change in behavior from reflection methods such as System.Enum.IsDefined. En conséquence, si le nouveau membre doit être retourné à partir de méthodes existantes ou si une incompatibilité d’application connue se produit en raison de l’utilisation médiocre de la réflexion, la seule solution sans rupture consiste à :Accordingly, if the new member has to be returned from existing methods or a known application incompatibility occurs because of poor reflection usage, the only nonbreaking solution is to:

  1. Ajouter une nouvelle énumération qui contient les membres d’origine et nouvelles.Add a new enumeration that contains the original and new members.

  2. Marquez l’énumération d’origine avec le System.ObsoleteAttribute attribut.Mark the original enumeration with the System.ObsoleteAttribute attribute.

    Suivez la même procédure pour les types visibles de l’extérieur ou les membres qui exposent l’énumération d’origine.Follow the same procedure for any externally visible types or members that expose the original enumeration.

Comment corriger les violationsHow to fix violations

Pour corriger une violation de cette règle, supprimez ou renommez le membre.To fix a violation of this rule, remove or rename the member.

Quand supprimer les avertissementsWhen to suppress warnings

Il est possible de supprimer un avertissement de cette règle pour un membre qui est actuellement utilisé ou pour les bibliothèques fournies antérieurement.It is safe to suppress a warning from this rule for a member that is currently used or for libraries that have previously shipped.

CA2217 : Ne marquez pas les énumérations avec FlagsAttributeCA2217: Do not mark enums with FlagsAttribute

CA1712 : Ne préfixez pas les valeurs d’énumération avec le nom du typeCA1712: Do not prefix enum values with type name

CA1028 : Le stockage de l’énumération doit être Int32CA1028: Enum storage should be Int32

CA1008 : Les énumérations doivent avoir la valeur zéroCA1008: Enums should have zero value

CA1027 : Marquez les énumérations avec FlagsAttributeCA1027: Mark enums with FlagsAttribute