2009-03-28 3 views
1

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

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

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

ответ

4

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

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

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

1

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

1

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

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

Смежные вопросы