値からC#列挙型の説明を取得するにはどうすればいいですか? [重複] 質問する

値からC#列挙型の説明を取得するにはどうすればいいですか? [重複] 質問する

次のような説明属性を持つ列挙型があります:

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) };

私がやりたいのは、列挙値 (例: 1) がわかっている場合、説明を取得するにはどうすればよいかということです。言い換えると、整数を「列挙値」に変換して GetDescription メソッドに渡すにはどうすればよいかということです。

ベストアンサー1

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

C# ののデフォルトの基になるデータ型enumは なのでint、それをキャストするだけです。

おすすめ記事