首页 > 编程语言 >C#使用枚举类型作为数据源

C#使用枚举类型作为数据源

时间:2023-01-18 14:13:40浏览次数:47  
标签:Description C# 数据源 value 枚举 customAttribute string

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()));
});

标签:Description,C#,数据源,value,枚举,customAttribute,string
From: https://www.cnblogs.com/xhubobo/p/17059659.html

相关文章

  • tcpdump
    一.网址参考1. 抓包神器:tcpdump!我还真没用过2. Linuxtcpdump命令详解3. Tcpdump命令参数详解......
  • TCP 队列
    一、TCP队列1、synsqueue:半连接队列TCP三次握手(参考:TCP建立连接之三次握手),第一步,服务端接收到客户端发送的syn消息后,将连接信息放入synsqueue,此时,双方连接尚未建......
  • C#免安装.exe
      你如果用的是VS的话,新建一个项目,在调试项目的时候会自动在项目目录的bin\Debug\目录下面自动生成一个"项目名.EXE"文件,这个文件就是免安装的。你如果用的是VS的话......
  • 如果有效python code review
    这篇文章主要介绍一些工具,方法,可以帮助我们做codepre-commit检查,这样我们做codereview之前,这些工具方法就帮我们解决了一些代码风格的问题和静态检查就能检查出来......
  • 【230118-2】在三角形AMC中,N为MC上一点,角MAN=角C=45度,AC=6倍根号2,MC=9. 求:AN的长?
    ......
  • Angular component 没有constructor如何调用service
    Addthiscodein app.module.tsimport{Injector,NgModule}from'@angular/core';exportletAppInjector:Injector;exportclassAppModule{constru......
  • 拜占庭将军问题与CAP
    1.拜占庭将军问题拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了达到防御目的,每个军队都分隔很远,将军与将军之间只能靠信......
  • Python导入Excel表格数据并以字典dict格式保存
      本文介绍基于Python语言,将一个Excel表格文件中的数据导入到Python中,并将其通过字典格式来存储的方法。  我们以如下所示的一个表格(.xlsx格式)作为简单的示例。其中,表......
  • SpringBoot2注解:@Configuration
    @configuration@Configuration这个注解作用就是告诉springboot这是一个配置类。配置类以及类里的方法都可以作为bean。用@Bean标记@Configuration包含 proxyBeanMeth......
  • Windows Server 2008或2012 修复CVE-2016-2183(SSL/TLS)漏洞的方法
    一、漏洞说明Windowsserver2008或2012远程桌面服务SSL加密默认是开启的,且有默认的CA证书。由于SSL/TLS自身存在漏洞缺陷,当开启远程桌面服务,使用漏洞扫描工具扫描,发现存在......