跨多个应用程序层管理大量枚举
本文关键字:枚举 管理 应用程序 | 更新日期: 2023-09-27 18:30:16
我有一个需要使用很多不同枚举的应用程序。应用程序可以分为不同的层。为了示例,我们假设三层:第三方分析库、应用程序业务逻辑和 UI/表示逻辑。
在许多情况下,所有层都可能需要一个表示相同概念的枚举。让我们以付款频率为例。(例如每年、每半年、每季度等)。第三方库提供自己的枚举,业务逻辑层中的各种类需要类似的枚举,最后 UI 层可能需要它在下拉列表中呈现各种选择等......
现在,通常我想通过在层的公共接口中公开内部依赖项的类型来保护每个层的用户免受其内部依赖项和实现细节的影响。这意味着,即使与第三方库的交互需要使用其自己的"频率"枚举,我也需要为业务层创建一个等效的"频率"枚举,并为 UI 层创建另一个枚举......
所有这些都需要大量的来回映射,以及可能大量的附加映射器类。另一方面,风险是每一层都可能决定从自己的枚举版本中排除它不需要或支持的值......
现在,由于我必须处理很多枚举,我只是想知道这通常是一件好事,还是我只是把事情复杂化了?
我会说你把事情复杂化了。为什么不为这样的共享实体建立一个单独的项目呢?然后,可以让每个程序集引用您的Common
项目以引用必要的枚举,并且仍然让它们彼此完全独立。
好吧,我可能误解了你,但实际上,你只需要,在数据层,由逻辑层查看,你的枚举。使用您自己的示例,您将在表中PaymentFrequency
列名。您的表应该在数据层中映射此特定字段,因此您将创建一个枚举,并且列 PaymentFrequency 的类型(此时表类或实体的属性)将被设置为为此目的创建的枚举。因此,当您将逻辑层指向请求/访问数据层时,您需要了解相同的枚举 - 因此,如果您在逻辑层和数据层之间使用 DAL 层,我建议您在单独的类/文件中创建枚举。好吧,在你的逻辑层 - 通过使用枚举选项 - 你将使用枚举选项填充一个简单的Combo
组件,因此,你将通过隐藏所有层来预先设置UI中的选项,以一种用户不会知道你实际上正在使用枚举来处理选项的方式。
我希望这有所帮助。对不起 - 真的很抱歉 - 为此*英语不好!如果这没有帮助,请发布一些鳕鱼示例以更容易帮助您=)