私が構築するソフトウェアには、さまざまなステータス間の「アプリケーション」の切り替えが多く含まれます。アプリケーションのステータスに応じて、実行できる特定のタスクがあります。ステータスとして列挙型を使用することを考えていました
public class Application
{
public int Id {get;set;}
public Status {get;set;}
}
public enum Status
{
[Description("New")]New = 1, [Description("Closed")]Closed = 2
}
しかし、ステータスは頻繁に更新/並べ替えられるため、データベースでルックアップテーブルを使用するのが良いと思いました。
table status (id int pk, desc string, sort_order int)
table application (id int pk, status_id int fk)
私の場合、私は次のようなことをする必要があります
if (application.Status == Status.New)
{ //do something }
else if (application.Status == Status.Closed)
{ //do other things }
上記の場合は列挙型の方が簡単だと思います。ただし、ステータスの並べ替え順序や説明を更新する場合は、かなり難しいでしょう。
リフレクションを使用して、ルックアップテーブルの値に基づいて列挙型を動的に作成する必要がありますか?または、状態パターンを使用する必要がありますか?列挙型の反射で私が目にする問題は、パフォーマンスへの影響です。そして、状態パターンは多くの冗長なコードを生成する可能性があります。
どう思いますか?前もって感謝します!