1. ホーム
  2. c#

[解決済み] C# Enumの説明を値から取得する方法は?[重複している]をクリックします。

2022-03-22 21:27:31

質問

このようなDescription属性を持つenumがあります。

public enum MyEnum
{
    Name1 = 1,
    [Description("Here is another")]
    HereIsAnother = 2,
    [Description("Last one")]
    LastOne = 3
}

Enum に基づいて説明を取得するためのコードを見つけました。

public static string GetEnumDescription(Enum value)
{
    FieldInfo fi = value.GetType().GetField(value.ToString());

    DescriptionAttribute[] attributes = fi.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];

    if (attributes != null && attributes.Any())
    {
        return attributes.First().Description;
    }

    return value.ToString();
}

これによって、次のようなコードを書くことができる。

var myEnumDescriptions = from MyEnum n in Enum.GetValues(typeof(MyEnum))
                         select new { ID = (int)n, Name = Enumerations.GetEnumDescription(n) };

enumの値(例えば1)がわかっている場合、どのように説明を取得すればいいのでしょうか?言い換えれば、整数を "Enum値"に変換してGetDescriptionメソッドに渡すにはどうしたらよいでしょうか?

どのように解決するのですか?

int value = 1;
string description = Enumerations.GetEnumDescription((MyEnum)value);

のデフォルトの基礎となるデータ型です。 enum は、C#では int であれば、そのままキャストすればよい。