Enum verwarf c # - c #, .net, enums

Ich habe eine veraltete (Obsolete) -Funktion, die eine Aufzählung zurückgibt, und ich habe eine neue Funktion, die eine Liste von Aufzählungen zurückgibt.

Einer der Aufzählungswerte wird nur in der veralteten Funktion verwendet, so ist es möglich, ein zu setzen enum Mitglied als obsolet (weil es nicht in der Liste sein kann)?

Antworten:

40 für die Antwort № 1

Sicher kannst du:

public enum EE
{
A,

[Obsolete]
B
}

27 für die Antwort № 2

Tatsächlich ist es möglich, Compilerwarnungen oder Compilerfehler zu generieren.

public enum TestEnum
{
A,
[Obsolete("Not in use anymore")]
B,
[Obsolete("Not in use anymore", true)]
C,
}

public class Class1
{
public void TestMethod()
{
TestEnum t1 = TestEnum.A; //Works just fine.
TestEnum t2 = TestEnum.B; //Will still compile, but generates a warning.
TestEnum t3 = TestEnum.C; //Will no longer compile.
}
}

Dies funktioniert überall dort, wo Sie ein [Obsolet] -Attribut verwenden.


1 für die Antwort № 3

Ich habe das nicht auf einem Enum versucht, aber so etwas könnte funktionieren:

[Obsolete("Please use ... instead!")]
public enum MyEnum
{
One,
Two,
Three
}

-2 für die Antwort № 4

Wie andere Poster gezeigt haben, können Sie die hinzufügen ObsoleteAttribute zum Enum-Mitglied, aber es kann immer noch in verwendet werdendein Code. Es gibt keine Möglichkeit, enum-Member programmatisch auszuschließen, d. H. Einen Kompilierfehler oder eine Ausnahme zu erzeugen, wenn er in der Enumeration vorhanden ist. Das Hinzufügen des Attributs warnt den Entwickler nur darüber.


Speisekarte