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 @   xhubobo  阅读(155)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示