2

各クラスで使用可能なアクションを表すために、いくつかのクラスで列挙型を定義する必要があります。. 今、これに対処する最善の方法は何だろうか?

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){ ...}
4

2 に答える 2

0

答えはあなたのドメインから来るべきです - ユビキタス言語

ただし、クラスごとに新しい列挙を実装すると問題が発生すると思います。このアプローチはエラーが発生しやすく、開発者を混乱させるでしょう。将来、あなたのコードを保守しなければならない貧しい人たちを想像してみてください...

列挙型の使用を主張する場合は、次の名前の単一の列挙型を作成Actionsし、アプリケーション全体で一貫して使用する方がよいと思います

よりエレガントなソリューションが必要な場合は、State パターンを検討することをお勧めします

于 2012-09-29T09:26:13.753 に答える
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.InsertまたはFoo.SelectまたはFoo.Delete.

これは役に立ちますか?

于 2012-09-29T09:44:51.690 に答える