Моя команда разработчиков столкнулась с проблемой дизайна. Я надеюсь, что кто-то может помочь мне немного очистить эту часть архитектуры.
В моей системе есть enum с 250 участниками [один член представляет собой отдельный выпадающий список]. Чтобы заполнить раскрывающиеся списки в любом данном окне, эта форма отправляет элементы перечисления, которые относятся к необходимым раскрывающимся спискам, и возвращается раскрывающаяся информация.
Другими словами, скажем, у нас есть 3 окна. В окне A есть раскрывающиеся списки X, Y и Z. В окне B есть раскрывающиеся списки W, X и Y, а в окне C есть раскрывающиеся списки T, U и W. Мой список DropDownType будет состоять из T, U, W, X, Y, Y и Z. Таким образом, для указанного окна, учитывая раскрывающиеся списки в этом окне, я запрашиваю данные для отображения в этих раскрывающихся списках.
Это упрощенный пример, потому что мое приложение состоит из> 250 различных раскрывающихся списков.
Как вы можете себе представить, у меня есть заводская настройка для возврата данных для каждого выпадающего списка. И эта фабрика вызывается для каждого запрошенного выпадающего списка.
switch (dropDownType)
{
case DropDownType.T:
return (from t in dataContext.GetTable<TableOne>()
select new DropDownDto
{
DropDownDisplayName = t.ColumnA,
DropDownValue = t.ColumnB
}).ToList();
case DropDownType.U:
return (from u in dataContext.GetTable<TableTwo>()
select new DropDownDto
{
DropDownDisplayName = u.ColumnC,
DropDownValue = u.ColumnD
}).ToList();
// etc...
}
Поскольку у меня так много членов в этом перечислении, кто-нибудь знает о более изящном способе кодирования этого? Как вы думаете, было бы полезно преобразовать это в фабричные методы (но тогда нам придется беспокоиться о 250 отдельных файлах в нашем источнике ...)? Есть ли другая модель, которая более полезна? Просто иметь этот ОГРОМНЫЙ оператор переключения становится неуправляемым.
Любая помощь очень ценится. Заранее спасибо!