列挙値と説明のリストを取得するにはどうすればよいですか?

リラン・フリードマン

私は次の列挙型を持っています:

public enum AlertSeverity
    {
        [Description("Informative")]
        Informative = 1,

        [Description("Low risk")]
        LowRisk = 2,

        [Description("Medium risk")]
        MediumRisk = 3,

        [Description("High risk")]
        HighRisk = 4,

        Critical = 5
    }

そしてList<KeyValuePair<string, int>>、すべての説明/名前と値を取得したいので、次のようなものを試しました:

public static List<KeyValuePair<string, int>> GetEnumValuesAndDescriptions<T>() where T : struct
    {
        var type = typeof(T);
        if (!type.IsEnum)
            throw new InvalidOperationException();
        List<KeyValuePair<string, int>> lst = new List<KeyValuePair<string, int>>();
        foreach (var field in type.GetFields())
        {
            var attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute; // returns null ???
            if (attribute != null)
                lst.Add(new KeyValuePair<string, int>(attribute.Description, ((T)field.GetValue(null)).ToInt()));
            else
                lst.Add(new KeyValuePair<string, int>(field.Name, ((T)field.GetValue(null)).ToInt())); // throws exception: "Non-static field requires a target" ???
        }
        return lst;
    }

理由はわかりませんが、属性varがnullを返し、field.Nameが例外「非静的フィールドにはターゲットが必要です」をスローします。

ジョルジ・ナケウリ

これは機能するはずです:

public static List<KeyValuePair<string, int>> GetEnumValuesAndDescriptions<T>()
        {
            Type enumType = typeof (T);

            if (enumType.BaseType != typeof(Enum))
                throw new ArgumentException("T is not System.Enum");

            List<KeyValuePair<string, int>> enumValList = new List<KeyValuePair<string, int>>();

            foreach (var e in Enum.GetValues(typeof(T)))
            {
                var fi = e.GetType().GetField(e.ToString());
                var attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);

                enumValList.Add(new KeyValuePair<string, int>((attributes.Length > 0) ? attributes[0].Description : e.ToString(), (int)e));
            }

            return enumValList;
        }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

値からC#列挙型の説明を取得するにはどうすればよいですか?

分類Dev

この列挙型からCustomStringConvertibleの説明を取得するにはどうすればよいですか?

分類Dev

VB.NETの列挙型から説明を取得するにはどうすればよいですか?

分類Dev

列をカテゴリ値として説明するにはどうすればよいですか?

分類Dev

列のリストの最大値と最小値を取得するにはどうすればよいですか?

分類Dev

GitHubリポジトリの説明を取得するにはどうすればよいですか?

分類Dev

「remoteJenkinsFileWorkflowMultiBranchProjectFactory」コンテキストで「remoteJenkinsFileSCM()」の値を説明するにはどうすればよいですか?

分類Dev

配列をネストされた配列と比較し、一致する値のリストではなく、一致するペアを出力するにはどうすればよいですか?(コードは説明に役立ちます)

分類Dev

ASP.NET MVCのドロップダウンリストで使用するC#の列挙値に説明を追加するにはどうすればよいですか?

分類Dev

ループの前に列挙を使用するときに空のリストを取得するにはどうすればよいですか?

分類Dev

列挙されたタプルのリストの要素をその列挙によって取得するにはどうすればよいですか?

分類Dev

blogspotでラベルのタイトルと説明の値を取得するにはどうすればよいですか?

分類Dev

AssemblyInfoから製品名と製品の説明を取得するにはどうすればよいですか?

分類Dev

SwashbuckleのXMLドキュメントから列挙型の説明を生成するにはどうすればよいですか?

分類Dev

説明的/読み取り可能なステートメントでBASH配列の長さを取得するにはどうすればよいですか?

分類Dev

ListBoxの列挙可能な値リストとして日付値を一覧表示するにはどうすればよいですか?

分類Dev

ElasticsearchクエリJavaの完全な説明を取得するにはどうすればよいですか?

分類Dev

Pythonで、Google検索からリンクの説明テキストを取得するにはどうすればよいですか?

分類Dev

単一のActiveRecord列から値のリストを取得するにはどうすればよいですか?

分類Dev

unity3dでc#を使用してモデルの説明リストを取得するにはどうすればよいですか?

分類Dev

文字列列挙型のすべての値を取得するにはどうすればよいですか?

分類Dev

C ++ 11 int値で列挙型クラス値を取得するにはどうすればよいですか?

分類Dev

列挙型リストに文字を*、/、-、%、+として設定するにはどうすればよいですか?

分類Dev

typescriptで列挙型のすべての値を取得するにはどうすればよいですか?

分類Dev

値と値のリストから文字列を作成するにはどうすればよいですか?

分類Dev

値から相対列挙型をparamとして取得するにはどうすればよいですか?

分類Dev

Javaですべての列挙値を取得するにはどうすればよいですか?

分類Dev

Ruby:列挙型の最初の定数に-1の値を取得するにはどうすればよいですか?

分類Dev

Swiftで生の値から列挙型を取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    値からC#列挙型の説明を取得するにはどうすればよいですか?

  2. 2

    この列挙型からCustomStringConvertibleの説明を取得するにはどうすればよいですか?

  3. 3

    VB.NETの列挙型から説明を取得するにはどうすればよいですか?

  4. 4

    列をカテゴリ値として説明するにはどうすればよいですか?

  5. 5

    列のリストの最大値と最小値を取得するにはどうすればよいですか?

  6. 6

    GitHubリポジトリの説明を取得するにはどうすればよいですか?

  7. 7

    「remoteJenkinsFileWorkflowMultiBranchProjectFactory」コンテキストで「remoteJenkinsFileSCM()」の値を説明するにはどうすればよいですか?

  8. 8

    配列をネストされた配列と比較し、一致する値のリストではなく、一致するペアを出力するにはどうすればよいですか?(コードは説明に役立ちます)

  9. 9

    ASP.NET MVCのドロップダウンリストで使用するC#の列挙値に説明を追加するにはどうすればよいですか?

  10. 10

    ループの前に列挙を使用するときに空のリストを取得するにはどうすればよいですか?

  11. 11

    列挙されたタプルのリストの要素をその列挙によって取得するにはどうすればよいですか?

  12. 12

    blogspotでラベルのタイトルと説明の値を取得するにはどうすればよいですか?

  13. 13

    AssemblyInfoから製品名と製品の説明を取得するにはどうすればよいですか?

  14. 14

    SwashbuckleのXMLドキュメントから列挙型の説明を生成するにはどうすればよいですか?

  15. 15

    説明的/読み取り可能なステートメントでBASH配列の長さを取得するにはどうすればよいですか?

  16. 16

    ListBoxの列挙可能な値リストとして日付値を一覧表示するにはどうすればよいですか?

  17. 17

    ElasticsearchクエリJavaの完全な説明を取得するにはどうすればよいですか?

  18. 18

    Pythonで、Google検索からリンクの説明テキストを取得するにはどうすればよいですか?

  19. 19

    単一のActiveRecord列から値のリストを取得するにはどうすればよいですか?

  20. 20

    unity3dでc#を使用してモデルの説明リストを取得するにはどうすればよいですか?

  21. 21

    文字列列挙型のすべての値を取得するにはどうすればよいですか?

  22. 22

    C ++ 11 int値で列挙型クラス値を取得するにはどうすればよいですか?

  23. 23

    列挙型リストに文字を*、/、-、%、+として設定するにはどうすればよいですか?

  24. 24

    typescriptで列挙型のすべての値を取得するにはどうすればよいですか?

  25. 25

    値と値のリストから文字列を作成するにはどうすればよいですか?

  26. 26

    値から相対列挙型をparamとして取得するにはどうすればよいですか?

  27. 27

    Javaですべての列挙値を取得するにはどうすればよいですか?

  28. 28

    Ruby:列挙型の最初の定数に-1の値を取得するにはどうすればよいですか?

  29. 29

    Swiftで生の値から列挙型を取得するにはどうすればよいですか?

ホットタグ

アーカイブ