Подтвердить что ты не робот

Enum устарел С#

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

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

4b9b3361

Ответ 1

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

public enum EE
{
    A,

    [Obsolete]
    B
}

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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