ファクトリ パターンを実装するプロジェクトに取り組んでいます。ファクトリは、switch ステートメントに列挙型を使用します。
列挙型の値は、データベース テーブルの ID に対応します。テーブル内のアイテム数は 30 を超えており、増え続けています。テーブルは、約 100 項目を超えないようにしてください。
この場合、列挙型を使用する必要がありますか? 私の代替手段は何ですか?
個別の値を持つ列挙型メンバーの数は、基になる列挙型 (既定では Int32) によって制限されます。とにかく... Int32 列挙型を使用すると、最大 2^32 個の異なる値を持つことができます。例:
public enum MyEnum : byte { /* 256 Distinct Members */ }
ただし、すべてのメンバーが同じ値であれば、必要な数のメンバーを持つことができます。
public enum MyEnum : byte { A, B = A, C = B, ... }
C# コンパイラにはおそらく実装定義の制限がありますが、それはメモリに依存していると思います。
これはかなり長い switch ステートメントになりますが、列挙型で 100 個の要素を使用すること自体は何も問題はなく、かなり高速です。
別の方法として を設定することもできますがDictionary<int, Func<TFactoryResult>>
、ファクトリの実装についてもう少し知らなければ、アドバイスを与えることは困難です。列挙型は常に最速の選択肢である可能性が最も高いですが、最も読みやすいコードを提供するわけではありません。