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