gpt4 book ai didi

c# - 如何以更清洁的方式处理大型工厂

转载 作者:行者123 更新时间:2023-11-30 15:12:48 34 4
gpt4 key购买 nike

我的开发团队遇到了设计问题。我希望有人可以帮助我稍微清理一下架构的这一部分。

在我的系统中,我有一个包含 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 语句就变得难以管理了。

非常感谢任何帮助。提前致谢!

最佳答案

您可以创建一个 Dictionary<DropDownType, DropDownDtoDelegate>每个条目都包含一个枚举条目作为键和一个委托(delegate)来检索下拉数据作为值。这将允许您将每个返回下拉列表的方法分开,并从巨大的 switch 语句中分离出来。然后,您将有一种方法来检索委托(delegate)、执行它并返回下拉列表数据。

关于c# - 如何以更清洁的方式处理大型工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/664440/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com