Рекомендуется выполнить следующие действия:
- миграция данных: замените устаревшее значение в вашей базе данных на правильное.
- очистка кода: удалите значение перечисленияпотому что он больше не нужен.
Если миграция данных не может быть выполнена, потому что старое значение все еще хранится в базе данных, поэтому я буду выполнять следующие шаги:
- каждый установщик свойства или метод, который устанавливает поле из вашего перечисления, должен добавить некоторый защитный код.При установке с устаревшим значением перечисления вы генерируете исключение
InvalidOperationException
с явным сообщением. - в определении enum я добавлю XML-комментарии с
<remark>
, которые помогут разработчикам узнать о происходящем. - необязательный шаг: идти дальше, добавив пользовательский Анализатор кода для отслеживания использования этого значения.
Обратите внимание: я не украшаю значение перечисления атрибутом [Obsolete]
, поскольку этот атрибут означает две вещи:
- код устарел в версии X.
- код будет удален в версии после X: версия Y.
Эти две вещи позволяют разработчикам, использующим версию X для очисткиих фактическая база кода (полностью исключите использование устаревшего значения enum) и подготовьтесь к версии Y (никаких изменений не потребуется, поскольку вся работа выполняется при использовании версии X).Вы не можете использовать атрибут [Obsolete]
, потому что вы сказали, что старые данные все еще будут существовать в базе данных, поэтому вам, возможно, придется их где-то отображать, и вы не следуете двум вещам, которые я сказал об атрибуте [Obsolete]
.