Enum устарел c # - PullRequest
       10

Enum устарел c #

29 голосов
/ 21 декабря 2011

У меня есть устаревшая (устаревшая) функция, которая возвращает перечисление, и у меня есть новая функция, которая возвращает список перечислений.

Одно из значений перечисления используется только вустаревшая функция, так можно ли установить элемент enum как устаревший (потому что он не может быть в списке)?

Ответы [ 4 ]

46 голосов
/ 21 декабря 2011

Конечно, вы можете:

public enum EE
{
    A,

    [Obsolete]
    B
}
31 голосов
/ 18 июня 2013

На самом деле, возможно генерировать либо предупреждения компилятора, либо ошибки компилятора.

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

Это будет работать везде, где вы используете [устаревший] атрибут.

1 голос
/ 21 декабря 2011

Я не пробовал это на перечислении, но что-то вроде этого может работать:

[Obsolete("Please use ... instead!")]
public enum MyEnum
{
  One,
  Two,
  Three
}
0 голосов
/ 21 декабря 2011

Как отмечали другие авторы, вы можете добавить ObsoleteAttribute к члену enum, но он все еще может использоваться в вашем коде.Нет никакого способа программно исключить член enum, то есть вызвать ошибку компиляции или исключение, если оно существует в перечислении.Добавление атрибута только предупредит разработчика об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...