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

bja*_*vor 5 c# enums

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

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

现在,通常我想通过不从层的公共接口中暴露内部依赖的类型来保护每个层的用户免受其内部依赖性和实现细节的影响.这意味着即使与第三方lib的交互需要使用自己的"频率"枚举,我还需要为业务层创建一个等效的"频率"枚举,并且可能需要为UI层创建另一个枚举...

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

既然我必须处理很多枚举,我只是想知道这通常是一件好事,还是我只是过于复杂化了?

Ant*_*t P 4

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