Enum obsolète c#

J'ai une fonction obsolète (obsolète) qui renvoie une énumération, et j'ai une nouvelle fonction qui renvoie une liste d'énumérations.

L'une des valeurs enum est utilisée uniquement dans la fonction obsolète, est-il donc possible de définir un membreenum comme obsolète (car il ne peut pas être dans la liste)?

26
demandé sur Adam 2011-12-21 14:57:01

4 réponses

Bien Sûr, vous pouvez:

public enum EE
{
    A,

    [Obsolete]
    B
}
41
répondu Kirill Polishchuk 2011-12-21 10:59:52

En fait, il est possible de générer des avertissements du compilateur ou des erreurs du compilateur.

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. 
    }
}

Cela fonctionnera partout où vous utiliserez un attribut [Obsolete].

27
répondu Volkirith 2013-06-18 13:14:14

Je n'ai pas essayé cela sur une énumération mais quelque chose comme ça pourrait fonctionner:

[Obsolete("Please use ... instead!")]
public enum MyEnum
{
  One,
  Two,
  Three
}
1
répondu 2011-12-21 11:00:39

Comme d'autres affiches l'ont souligné, vous pouvez ajouter le ObsoleteAttribute au membre enum, mais il peut toujours être utilisé dans votre code. Il n'y a aucun moyen d'exclure par programme le membre enum, c'est-à-dire produire une erreur de compilation ou une exception si elle existe dans l'énumération. L'ajout de l'attribut avertira seulement le développeur à ce sujet.

-2
répondu Tomislav Markovski 2011-12-21 12:57:43