用途:
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属性の文字列が返る。