对业务层中用于存储枚举定义的单独类的一般共识是什么?这是不好的做法吗?这是否符合良好的n层设计?目前,我的枚举定义分布在不同的,我认为相关的类别 - 但我觉得它们应该在一个地方。事实上,这是一个主观问题,而且与我如何构建其余解决方案有关?
答案 0 :(得分:9)
我真的不明白你为什么要在类中放置一个枚举 - 也许你的意思是文件?
就个人而言,我为每个枚举提供了一个单独的文件,其中包含枚举的名称。
我将此文件放在使用枚举的位置附近并相应地命名它。
如果要在程序集/命名空间之间共享枚举,我将使用最低的共享命名空间,因此使用命名空间可以看到它。
使枚举靠近它们的使用位置会使代码分离成更容易的项目(如果需要)。
我没有看到将它们全部放在一个文件中的重点 - 导航明智的是,Visual Studio具有足够的导航功能,这是不需要的。
答案 1 :(得分:6)
将枚举保存在单独的类中
在这种情况下,你将不相关的定义扔到一个类中,几乎没有任何好处。
将枚举定义为与
相关的类的嵌套类型当您在课程中持有枚举时,您可能会遇到命名问题:
class Foo
{
public enum SomeType { /* ... */ }
public SomeType SomeType { get; set; }
}
这会产生SomeType已定义的错误。
它可能只是个人品味,但大多数情况下我把我的枚举与他们相关的课程一起放在一起,而不是嵌套它们:
public enum SomeType { }
public class Foo { }
我很多次试图让它们嵌套(我们当然是在谈论公开的枚举),但命名问题并不值得,例如:
class Foo
{
public enum Enumeration { }
}
然后我可以在Foo
类之外使用这样的枚举,如:Foo.Enumeration
,但是遵循声明(在相同的命名空间中):
enum FooEnumeration { }
class Foo { }
给出了类似的结果,因为您不必输入'。'当您引用枚举时:FooEnumeration
。而且,后者允许你这样做:
class Foo
{
public FooEnumeration Enumeration { get; set; }
}
在以前的情况下会引起上述命名冲突。
<强>摘要强>
当使用具有强大GoTo功能的IDE时,在我看来,命名问题远比“物理”更重要。枚举定义的本地化。
答案 2 :(得分:1)
我希望在我的项目中为所有常量和枚举设置单独的类。它提高了代码的可读性。你应该这样做,特别是如果你有一个Comman项目,你正在业务层和其他层中引用。但是如果你只是为了Constant / Enum类添加不必要的引用,那么将它们放在同一个项目中更有意义。
public class Enumerations
{
public enum Gender{
Male = 0,
Female = 1,
Unknown = 2
}
}
当你消费时,你可以像
那样做GetPerson(Enumeration.Gender gender)
{
}