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 que los usuarios omitir a un miembro solo porque su nombre contiene "reservados", así como tampoco puede confiar en que los usuarios lean o apliquen 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 los miembros reservados aparecen en entornos de desarrollo integrado inteligente y exploradores de objetos, pueden provocar confusión sobre qué miembros se están utilizando actualmente.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 utilizar a 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 casos de la adición de un miembro es un cambio importante incluso cuando los miembros originales mantienen 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. En primer lugar, el nuevo miembro no se puede devolver desde rutas de acceso de código existente sin interrumpir a los llamadores que usen un switch (Select en Visual BasicVisual Basic) instrucción en el valor devuelto, que incluye la lista de miembros completa y que inicia una excepción en 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 respecto a 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 una incompatibilidad de aplicación conocida que se produce 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. Agregar una nueva enumeración que contiene a los miembros originales y los nuevos.Add a new enumeration that contains the original and new members.

  2. Marcar 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 hayan distribuido previamente.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