Когда перечисления ломаются?
Чтобы поддержать новую функцию в существующей системе, я просто рассматривал возможность реализации какой-либо формы дискриминатора для таблицы сущностей в моей схеме базы данных.
Чтобы начать с наименьшего количества работ, которые я сработал, я в первую очередь выбрал целочисленный столбец и перечисление C # на уровне бизнес-объектов для удобства чтения. Это обеспечило бы полиморфизм бедняка, который в конечном итоге может перерасти в настоящий полиморфизм и, возможно, к образцу Стратегии.
Я решил проконсультироваться с блогосферой, поскольку я никогда не чувствовал себя комфортно при использовании перечислений - я подумал: а не пропустить ли это перечисление и перейти к структуре или классу?:
Прежде всего, я нашел утверждение, что ' Enums is Evil ', но я чувствовал, что это было чрезмерное обобщение, которое напрямую не касается моего варианта использования.
Если я пойду за перечислением, то есть хорошее обсуждение того, как я могу увеличить пробег , добавив дополнительные метаданные в мое перечисление.
Далее я натолкнулся на дискуссии Джимми Богарда о Классах перечисления , а затем обсудил в ' Стратегии и дискриминаторы в NHibernate '
Должен ли я пропустить перечисления и сразу перейти к классам перечисления? Или у кого-нибудь есть какие-либо другие предложения о том, как добавить простой объектный дискриминатор в мою модель домена.
Обновление:
Я бы также добавил, что как NHibernate, так и LINQ to SQL (и, вероятно, все другие методы доступа к данным, связанные с ORM) делают использование перечислений очень заманчивым, так как они позволяют прозрачно отображать столбец дискриминатора в отображении.
Было бы так просто сопоставить класс перечисления?
Смежные вопросы:
Отказ от ответственности:
Несмотря на мое небрежное использование термина «сущность» (в нижнем регистре «е»), я не претендую на то, что обсуждаю здесь DDD ...