C#使用枚举类型作为数据源
C#使用Enum.GetValues<TEnum>()方法获取枚举数组集合TEnum[],基于此可使用枚举的所有类型作为下拉框等控件的数据源使用。
1、枚举定义
internal enum IconResolution { [Description("16*16")] Width16 = 0, [Description("32*32")] Width32 = 1, [Description("48*48")] Width48 = 2, [Description("64*64")] Width64 = 3, [Description("128*128")] Width128 = 4 }
2、枚举帮助类
public static class EnumHelper { /// <summary>获取枚举字段的注释</summary> /// <param name="value">枚举值</param> /// <returns>枚举字段的注释</returns> public static string GetDescription(this Enum? value) { if (value == null) { return string.Empty; } var field = value.GetType().GetField(value.ToString(), BindingFlags.Static | BindingFlags.Public); if (field == null) { return string.Empty; } var customAttribute = field.GetCustomAttribute<DescriptionAttribute>(false); return string.IsNullOrEmpty(customAttribute?.Description) ? string.Empty : customAttribute.Description; } }
3、使用枚举类型
protected List<SelectedItem> IconResolutionList { get; } Enum.GetValues<IconResolution>().ToList().ForEach(t => { IconResolutionList.Add(new SelectedItem($"{t}", t.GetDescription())); });