How can I cast <T> as Enum when using EnumToList<T>
我有一个简单的类
1 2 3 4 5 6 | public class SelectItemOption { public string Title { get; set; } public string ID { get; set; } public string Description { get; set; } } |
我想创建一个方法,用枚举中的值填充
我从另一个so-answer中抢走了一些代码,以便将枚举值转换为可枚举的。
1 2 3 4 5 | public static IEnumerable<T> EnumToList<T>() where T : struct { return Enum.GetValues(typeof(T)).Cast<T>(); } |
我正试图把所有这些都按如下方式放在一起:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public static List<SelectItemOption> EnumAsSelectItemOptions<T>() where T : struct { var optionsList = new List<SelectItemOption>(); foreach (var option in EnumToList<T>()) //** headache here ** { optionsList.Add(new SelectItemOption() { Title = option.GetDisplayName(), ID = option.ToString(), Description = option.GetDisplayDescription() }); } return optionsList; } |
当我尝试迭代EnumTolist时,会出现问题。
无论我怎么尝试,我似乎都无法让
我试过…
如果我使用
但如果我使用
如果我尝试在foreach语句后将
啊!
不能像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public static List<SelectItemOption> EnumAsSelectItemOptions<T>() where T : struct { var optionsList = new List<SelectItemOption>(); foreach (var option in EnumToList<T>()) //** headache here ** { optionsList.Add(new SelectItemOption() { Title = option is Enum ? (option as Enum).GetDisplayName() : option.ToString(), ID = option.ToString(), Description = option is Enum ? (option as Enum).GetDisplayDescription() : option.ToString(), }); } return optionsList; } |