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()));
});
posted @ 2023-01-18 13:55  xhubobo  阅读(129)  评论(0编辑  收藏  举报