• システム開発に関わる内容をざっくりと書いていく

列挙体(enum)の数値からDescription属性を取得する(該当なしは空白)

用途:

DB等からenumに対応される数値を取得して、対応する文字列に変換する場面等で使用。

public static string GetEnumText<T>(int value) where T : Enum
{
    string result = "";
    IEnumerable<int> values = Enum.GetValues(typeof(T))
                      .OfType<T>()
                      .Select(s => Convert.ToInt32(s));
    if (values.Contains(value))
    {
        var kbn = (T)Enum.ToObject(typeof(T), value);
        result = kbn.GetName();
    }
    return result;
}
public static string GetName(this Enum enm)
{
    var gm = enm.GetType().GetMember(enm.ToString());
    var attributes = gm[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
    var description = ((DescriptionAttribute)attributes[0]).Description;
    return description;
}

取得した数値が、該当のenumに存在する値の場合はDescription属性を取得して返す。

使用例:

public enum SettingFlg
{
    [Description("選択可")]
    Selectable = 0,
    [Description("選択不可")]
    UnSelectable = 1,
}
//item.SettingFlgは数値
var flgDescription = GetEnumText<SettingFlg>(item.SettingFlg);

item.SettingFlgが0~1の場合は値に応じてSettingFlgのDescription属性の文字列が返る。