如何处理几乎相同的枚举?

时间:2012-09-29 09:09:57

标签: asp.net enums refactoring

我需要在几个类中定义枚举来表示每个类的可用操作。 。现在我想知道处理这个问题的最佳方法是什么?

1)创建单独的枚举

public enum Foo {Insert, Update, Delete , Select };
public enum Bar {Insert, Select };

2)或对所有人使用一般enum

public enum FooBar {Insert, Update, Delete , Select};

编辑:我想在类方法参数

中使用此枚举
public void MethodOne(Foo action){ ...}

2 个答案:

答案 0 :(得分:0)

答案应来自您的域名 - 无所不在的语言

但是,如果你为每个类实现一个新的枚举,我认为你会遇到麻烦,这种方法容易出错,而且会让你的开发人员感到困惑。现在想象一下将来必须维护代码的穷人......

如果你坚持使用枚举,我认为最好创建一个名为Actions的单个枚举,并在整个应用程序中一致地使用它

如果您想要更优雅的解决方案,我建议您考虑State pattern

答案 1 :(得分:0)

您可以使用继承来定义您的枚举 - 至少是一种。

试试这个:

public class Bar
{
    public static readonly int Insert = 1;
    public static readonly int Select = 2;
}

public class Foo : Bar
{
    public static readonly int Update = 3;
    public static readonly int Delete = 4;
}

您仍然使用类似枚举的代码 - Bar.InsertFoo.SelectFoo.Delete

这有帮助吗?