我的开发团队遇到了一个设计问题。我希望有人能帮助我优化一下这部分架构。
在我的系统中,我有一个包含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个单独文件...)?是否有其他更有用的模式?仅仅使用这个巨大的开关语句已经变得难以管理。
非常感谢任何帮助。提前致谢!