EnumToList

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public static List<T> EnumToList<T>(Type enumType) where T : ComboBoxSourceItem, new()
{
var result = new List<T>();

if (enumType.BaseType == typeof(System.Enum))
{
foreach (var enumValue in System.Enum.GetValues(enumType))
{
// 値の説明を取得する
FieldInfo fi = enumType.GetField(System.Enum.GetName(enumType, enumValue));
if (fi != null)
{
var description =
(DescriptionAttribute)Attribute.GetCustomAttribute(fi, typeof(DescriptionAttribute));
var content =
(DefaultValueAttribute)Attribute.GetCustomAttribute(fi, typeof(DefaultValueAttribute));
var code = (CodeAttribute)Attribute.GetCustomAttribute(fi, typeof(CodeAttribute));
var descriptionEn =
(DescriptionEnAttribute)Attribute.GetCustomAttribute(fi, typeof(DescriptionEnAttribute));
var isKarte =
(IsKarteAttribute)Attribute.GetCustomAttribute(fi, typeof(IsKarteAttribute));
var isIji =
(IsIjiAttribute)Attribute.GetCustomAttribute(fi, typeof(IsIjiAttribute));

T obj = new T();
obj.Content = content?.Value.ToString() ?? string.Empty;
obj.Value = Convert.ToInt32(enumValue);
obj.Description = description?.Description ?? string.Empty;
obj.DescriptionEn = descriptionEn?.DescriptionEn ?? string.Empty;
obj.Code = code?.Code ?? string.Empty;
obj.IsKarte = isKarte?.IsKarte ?? false;
obj.IsIji = isIji?.IsIji ?? false;

result.Add(obj);
}
}
}
return result;
}