Ответ 1
Конечно, вы можете:
public enum EE
{
A,
[Obsolete]
B
}
У меня есть устаревшая (устаревшая) функция, которая возвращает перечисление, и у меня есть новая функция, которая возвращает список перечислений.
Одно из значений перечисления используется только в устаревшей функции, поэтому можно ли установить член перечисления как устаревший (потому что он не может быть в списке)?
Конечно, вы можете:
public enum EE
{
A,
[Obsolete]
B
}
Собственно, можно генерировать предупреждения компилятора или ошибки компилятора.
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.
}
}
Это будет работать везде, где вы используете атрибут [Устаревший].
Я не пробовал это на перечислении, но что-то вроде этого могло бы работать:
[Obsolete("Please use ... instead!")]
public enum MyEnum
{
One,
Two,
Three
}
Как указывали другие плакаты, вы можете добавить ObsoleteAttribute
к элементу перечисления, но он все равно может использоваться в вашем коде. Нет никакого способа программно исключить член перечисления, то есть создать ошибку компиляции или исключение, если она существует в перечислении. Добавление атрибута будет предупреждать разработчика об этом.