Расширение перечислений с помощью пользовательского ввода - PullRequest
1 голос
/ 29 марта 2009

У меня есть перечисленное ниже перечисление, которое я использую для одного из моих фильтров, и оно хорошо подходит для моей объектной модели

public enum ColorGroups
{
    White = 1,
    Brown = 2,
    Red = 3,
    Black = 4
}

Моя проблема в будущем, когда клиент захочет добавить другой цвет в коллекцию, как мне расширить коллекцию. Я хочу, чтобы система была полностью динамичной и не требовала, чтобы технический специалист изменял код для таких вещей.

Ответы [ 3 ]

4 голосов
/ 29 марта 2009

Если вы хотите, чтобы данные были редактируемыми пользователем, может не подходить использование enum. Перечисления являются единицами времени компиляции, поэтому потребуется разработчик (или некоторая хакерская генерация кода).

Вместо этого рассмотрите возможность использования таблицы базы данных для этих данных, предварительно заполненной вашими элементами (и, возможно, столбцом «Система», чтобы контролировать, какие из них определяются пользователем, а не требуются системой). Тогда изменения - это просто вставки (и т. Д.) В таблицу.

Конечно, вы можете использовать любой другой механизм хранения - например, строку с разделителями в файле конфигурации - но я предполагаю, что вам понадобится база данных где-нибудь в системе?

1 голос
/ 29 марта 2009

Я хочу, чтобы система была полностью динамичной и не требовала, чтобы технический специалист изменял код для таких вещей.

«Полностью динамический» и «использовать enum» являются взаимоисключающими, если вы не хотите, чтобы технический специалист вмешивался для внесения изменений. База данных или файл конфигурации - лучший выбор здесь.

1 голос
/ 29 марта 2009

Перечисление может быть не подходящим инструментом для работы в этом случае. Вам было бы лучше использовать набор параметров конфигурации. Они могут быть в файле конфигурации, в реестре или в базе данных, в зависимости от того, что вам доступно, и от того, хотите ли вы, чтобы конфигурация была выполнена разработчиком или консультантом, или пользователями системы.

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