2017-08-08 14 views
1

Webプロジェクト全体で総称的にenumを使用するためのガイダンスが必要です。より詳細には、PersonType、PrivilegeType、ContactTypeなどのルックアップテーブルが、dll(またはC#ファイル、enumごとに1つのファイル)で作成され、Enums.dllと言われ、次に列挙型が定数として追加されることを意味しますAngularJSモジュール私たちの「普通」に、例えばこのようなものになる:C#データベースからすべてのAngularJS定数までの列挙

angular 
.module('common', []) 
.constant('ePrivilegeType', { 
    NoPermissions: 1, 
    ViewOnly: 2, 
    ViewAndUpdate: 3 
}) 
.constant('ePersonType', { 
    Administration: 1, 
    Student: 2, 
    Father: 3, 
    Mother: 4 
}); 

は共通と許容できるワークフローのこの種のですか?このようなワークフローはどのように達成できますか?私たちのプロジェクトのすべてを考えながら列挙型で作業することは、私たちの生活をはるかに簡単にします。

答えて

2

これらの一致がユーザーに表示するために必要な場合(コンボボックスなど)、私はこれらの値を提供するWeb APIを使用しました。したがって、angularjs内で使用されるデータオブジェクト内では、このマジックナンバーは依然として存在します。しかし/api/enum/privilegeTypes下のサーバーから、あなたは(.NETの)サーバー上でフォーマット

[{ 
    value: 1, 
    name: "NoPermissions", 
    description: "This is not allowed" 
}, ...] 

に戻ってオブジェクトの配列を取得しますあなたは、単純なクラス(例えばEnumWrapper)とファクトリメソッドを作成します(例:EnumWrapper.From<PrivilegeType>()EnumWrapper.From(enumTypeName))、すべての列挙値(Enum.GetValues())を反復処理し、目的のリストを作成して返します。このアプローチを使用することにより

public enum PrivilegeType 
{ 
    [Description("Access not allowed")] 
    NoPermissions = 1, 
    [Description("Read only ")] 
    ViewOnly = 2, 
    [Description("Read and write access")] 
    ViewAndUpdate = 3 
} 

あなたはまだ、データオブジェクト内のマジックナンバーを持っていますが、いくつかの意味のあるテキストをユーザーに利用可能なオプションを提示することができますし、列挙値や名前を変更する場合にのみ、それらを変更する必要がありますクライアント側ではなくサーバー側で実行されます。

関連する問題