c# - 跨多个应用程序层管理大量枚举

标签 c# enums

<分区>

我有一个应用程序需要使用很多不同的枚举。应用程序可以分为多个层。为了示例,我们假设三个层:第 3 方分析库、应用程序业务逻辑和 UI/表示逻辑。

在许多情况下,所有层可能都需要一个表示相同概念的枚举。让我们以付款频率为例。 (例如年度、半年度、季度等...)。 第 3 方库提供了自己的枚举,业务逻辑层中的各种类需要一个类似的枚举,最后 UI 层可能需要它来在下拉列表中呈现各种选择等...

现在,通常我想通过不在该层的公共(public)接口(interface)中公开来自内部依赖项的类型来保护每一层的用户免受其内部依赖项和实现细节的影响。这意味着即使与第 3 方库的交互需要使用其自己的“频率”枚举,我也需要为业务层创建一个等效的“频率”枚举,并可能为 UI 层创建另一个……

所有这些都需要大量的来回映射,可能还有很多额外的映射器类。另一方面,冒险是每一层都可以决定从它自己的枚举版本中排除它不需要或不支持的值......

现在因为我必须处理很多的枚举,我只是想知道这通常是一件好事,还是我只是把事情复杂化了?

最佳答案

我会说你把事情复杂化了。为什么不为这样的共享实体创建一个单独的项目?然后,您可以让每个程序集引用您的 Common 项目以引用必要的枚举,并且仍然让它们完全相互独立。

关于c# - 跨多个应用程序层管理大量枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645223/

相关文章:

c# - 在回发时将 ListBox 选择保持在 session 中

c - 枚举每个成员的值在 C 中存储在哪里以及如何存储?

java - 无法在初始化程序中引用静态枚举字段 Cbev2Key.log

c++ - 编译器无法在枚举中找到成员,枚举在单独的头文件中声明,并在源文件中定义

java - 枚举的枚举为 NULL

c++ - 如何在 C++11 中输出枚举类的值

c# - 自定义路由 ASP.NET MVC

c# - 当 Prism 中的另一个属性发生变化时更新一个属性

c# - ExRam Gremlinq 无法与 Cosmos DB 配合使用

c# - 如何等到调用 Web 服务完成?