Вы должны быть в состоянии извлечь части корпуса в параметризованную вспомогательную функцию:
function helper(grp, grpname, dg) {
VList<T> theList = FetchInformation(grp);
if (Session[grpname] != null)
{
List<T> tempList = (List<T>)Session[grpname];
theList.AddRange(tempList);
}
dg.DataSource = theList;
dg.DataBind();
}
private void LoadGroup(string option)
{
switch (option.ToUpper())
{
case "ALPHA":
helper(ManagerContext.Current.Group1, "alphaGroup", uxAlphaGrid);
break;
case "BRAVO":
helper(ManagerContext.Current.Group2, "bravoGroup", uxBravoGrid);
break;
case "CHARLIE":
helper(ManagerContext.Current.Group3, "charlieGroup", uxCharlieGrid);
break;
case "DELTA":
helper(ManagerContext.Current.Group4, "deltaGroup", uxDeltaGrid);
break;
default:
break;
}
}
Это один из вариантов, и я уверен, что есть дальнейший рефакторинг.
Для более глубокого рефакторинга я бы посмотрел на управление таблицами с использованием набора опционных объектов, потенциально делегатов или подобных объектов. Это работает так, что параметр становится объектом, а не строкой, а параметр имеет свойства, которые его настраивают, и методы, которые вызывают соответствующие делегаты. это действительно зависит от уровня абстракции, который вы хотите поддерживать. Иногда стоит унаследовать от обычных элементов управления и предоставить информацию о конфигурации в подклассе, чтобы они знали, как загрузить себя.
Здесь недостаточно места, чтобы действительно углубиться в эту глубину рефакторинга.