我的开发团队遇到了设计问题。我希望有人可以帮我清理一下架构的这一部分。
在我的系统中,我有一个包含 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 个单独的文件......)?还有另一种更有用的模式吗?仅仅拥有这个巨大的 switch 语句就变得难以管理。
任何帮助是极大的赞赏。提前致谢!