CA1700: No nombrar valores de enumeración 'reservado'CA1700: Do not name enum values 'Reserved'

TypeNameTypeName DoNotNameEnumValuesReservedDoNotNameEnumValuesReserved
Identificador de comprobaciónCheckId CA1700CA1700
CategoríaCategory Microsoft.NamingMicrosoft.Naming
Cambio problemáticoBreaking Change ProblemáticoBreaking

MotivoCause

El nombre de un miembro de enumeración contiene la palabra "reserved".The name of an enumeration member contains the word "reserved".

Descripción de la reglaRule description

Esta regla supone que un miembro de la enumeración con un nombre que contiene la palabra "reserved" no se utiliza actualmente pero hace de marcador de posición para que se pueda quitar o cambiar el nombre en una versión posterior.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. Quitar o cambiar el nombre de un miembro es un cambio importante.Renaming or removing a member is a breaking change. No debe esperar a los usuarios omitir a un miembro solo porque su nombre contiene "reservada", ni se puede confiar en los usuarios lean o atenerse a la documentación.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. Además, dado que reservada miembros aparecen en los exploradores de objetos y entornos de desarrollo integrado inteligente, pueden provocar confusión sobre qué miembros se usan en realidad.Furthermore, because reserved members appear in object browsers and smart integrated development environments, they can cause confusion about which members are actually being used.

En lugar de un miembro reservado, agregue a un nuevo miembro a la enumeración en la versión futura.Instead of using a reserved member, add a new member to the enumeration in the future version. En la mayoría de los casos la adición del nuevo miembro no es un cambio importante, como la adición no hace que los valores de los miembros originales a cambiar.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.

En un número limitado de los casos la adición de un miembro es un cambio importante incluso cuando los miembros originales se conservan sus valores originales.In a limited number of cases the addition of a member is a breaking change even when the original members retain their original values. Principalmente, el nuevo miembro no se puede devolver desde rutas de acceso de código existente sin interrumpir los llamadores que usen un switch (Select en Visual BasicVisual Basic) instrucción en el valor devuelto que abarca la lista de miembros completo y que produce una excepción el caso predeterminado.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. Una preocupación secundaria es que el código de cliente no puede controlar el cambio de comportamiento de los métodos de reflexión como 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 consecuencia, si el nuevo miembro se va a devolver desde los métodos existentes o se produce una incompatibilidad de aplicaciones conocidos debido al uso de reflexión deficiente, la única solución de no separación es: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. Agregue una nueva enumeración que contiene a los miembros originales y nuevos.Add a new enumeration that contains the original and new members.

  2. Marque la enumeración original con el System.ObsoleteAttribute atributo.Mark the original enumeration with the System.ObsoleteAttribute attribute.

    Siga el mismo procedimiento para los tipos visibles externamente o miembros que exponen la enumeración original.Follow the same procedure for any externally visible types or members that expose the original enumeration.

Cómo corregir infraccionesHow to fix violations

Para corregir una infracción de esta regla, quite o cambie el nombre del miembro.To fix a violation of this rule, remove or rename the member.

Cuándo Suprimir advertenciasWhen to suppress warnings

Es seguro suprimir una advertencia de esta regla para un miembro que se usa actualmente o para bibliotecas que se han enviado anteriormente.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: No marcar enumeraciones con FlagsAttributeCA2217: Do not mark enums with FlagsAttribute

CA1712: No utilizar prefijos en valores de enumeración con el nombre del tipoCA1712: Do not prefix enum values with type name

CA1028: El almacenamiento de la enumeración debe ser de tipo Int32CA1028: Enum storage should be Int32

CA1008: Las enumeraciones deben tener un valor igual a ceroCA1008: Enums should have zero value

CA1027: Marcar enumeraciones con FlagsAttributeCA1027: Mark enums with FlagsAttribute