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:
Dodanie nowego wyliczenia, zawierającego oryginalne i nowe elementy członkowskie.
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