我有一个C#N层项目,有5个层:1个基础设施2个域3-AppService 4个分布式服务5个演示
我想在我的项目中使用枚举.但我不知道哪一层描述了它们.我有两个想法.
1-在域中声明枚举并通过WCF DataContract传递网络.
2-在类库项目中声明枚举(例如:在公共层中)并将其构建为dll并在所有层中使用它.
帮我选一个.
如果只需要在某个特定图层中使用它,则在该图层中声明它.如果要在所有层中使用它,则应在某个公共层中声明它,并且应将引用添加到使用它的所有层中.
这取决于您需要使用枚举所代表的值的位置.如果这些是您的表示层需要的值,那么这就是他们应该去的地方.如果它是您的服务层所依赖的东西,那么您需要将它们放在那里.
我不确定最好的方法是将所有的枚举归结为一个位置.它们应该在应用程序中展开,位于依赖于它们的最低层,通常与使用枚举的类相同的命名空间并对它们执行一些逻辑.
如果应用和域将使用它们,则在域中声明它们并通过网络传递值.
我会就这个问题分享我的意见:
策略1:域层定义枚举AddressType
(具有Home,Work ...).服务层定义了另一个AddressTypeDto
包含所有值Home,Work ...)的枚举,它们实际上是从AddressType
==> 映射的AddressTypeDto
.在表示层上,AddressTypeDto
也将使用该类型.
策略2:创建一个not really a layer
包含常见枚举类型的layer(),并在Domain/Service/Presentation的不同层中使用它
S1:它保持所有层的域/服务/表示独立,但需要更多的类来呈现相同的东西.
S2:它保持所有层的域/服务/表示独立,但需要它们取决于"常见"dll.
我看到了实现两种策略之一的应用程序.我会选择Strategy 2
它,因为它更有效.几乎应用程序通常都有共同的东西,应该有一些枚举类型.