Udostępnij za pośrednictwem


CA1700: Nie należy nadawać wartościom enum oznaczenia „Reserved"

TypeName

DoNotNameEnumValuesReserved

CheckId

CA1700

Kategoria

Microsoft.Naming

Zmiana kluczowa

Kluczowa

Przyczyna

Nazwa elementu członkowskiego wyliczenia zawiera wyraz "zastrzeżony".

Opis reguły

Ta reguła zakłada, że element członkowski wyliczenia, którego nazwa zawiera "zastrzeżone", nie jest obecnie używany, ale jest symbolem zastępczym do zmiany nazwy lub usunięcia w przyszłej wersji.Zmiana nazwy lub usuwanie elementu członkowskiego jest zmianą kluczową.Nie należy się spodziewać, że użytkownicy zignorują element członkowski tylko dlatego, że jego nazwa zawiera "zastrzeżone", ani też nie należy polegać na użytkownikach, że przeczytają oni i będą przestrzegać dokumentacji.Ponadto, ponieważ zastrzeżone elementy członkowskiego są wyświetlane w przeglądarkach obiektów i inteligentnych zintegrowanych środowiskach deweloperskich, mogą wywoływać zamieszanie, które elementy członkowskie są naprawdę używane.

Zamiast użycia zastrzeżonego elementu członkowskiego, dodaj nowy element członkowski do wyliczenia w przyszłej wersji.W większości przypadków dodanie nowego elementu członkowskiego nie jest zmianą kluczową, póki to dodanie nie powoduje zmiany wartości oryginalnych elementów członkowskich.

W ograniczonej liczbie przypadków dodanie elementu członkowskiego jest zmianą kluczową, nawet gdy oryginalne elementy członkowskie zachowują swoje oryginalne wartości.Przede wszystkim, nowy element członkowski nie może być zwracany z istniejących ścieżek kodu bez przerywania wywołujących, które używają instrukcji switch (Select w Visual Basic) na zwracanej wartości, która obejmuje całą listę elementów członkowskich i w domyślnym przypadku zgłasza to wyjątek .Drugorzędnym problemem jest to, że kod klienta może nie obsługiwać zmiany w zachowaniu z metod odbicia, takich jak Enum.IsDefined.Odpowiednio, jeśli nowy element członkowski musi zostać zwrócony z istniejącej metody lub występuje znana niezgodność aplikacji z powodu słabego użycia odbicia, jedynym niekluczowym rozwiązaniem jest:

  1. Dodanie nowego wyliczenia, zawierającego oryginalne i nowe elementy członkowskie.

  2. Oznaczyć oryginalne wyliczenie atrybutem ObsoleteAttribute.

Wykonaj tę samą procedurę dla wszelkich widocznych z zewnątrz typów lub elementów członkowskich, które uwidaczniają oryginalne wyliczenie.

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, usuń lub zmień nazwę elementu członkowskiego.

Kiedy pominąć ostrzeżenia

Można bezpiecznie pominąć ostrzeżenie od tej reguły dla elementu członkowskiego, który jest aktualnie używany lub bibliotek, które zostały poprzednio wysłane.

Powiązane reguły

CA2217: Nie oznaczaj wyliczeń za pomocą FlagsAttribute

CA1712: Nie należy poprzedzać wartości enum nazwą typu

CA1028: Pamięć wyliczenia powinna być Int32

CA1008: Wyliczenia powinny mieć wartość zero

CA1027: Oznaczaj wyliczenia za pomocą FlagsAttribute