C#如何给枚举类型增加一个描述特性详解

C#可以通过给枚举类型增加描述特性(Description Attribute),为每个枚举成员添加对应的文字说明,方便代码的阅读和维护。

实现的步骤如下:

1. 定义枚举类型

首先需要定义一个枚举类型,以示例说明为例:

public enum Gender
{
    [Description("未知")]
    Unknown = 0,
    [Description("男性")]
    Male = 1,
    [Description("女性")]
    Female = 2
}

在枚举成员的上方添加Description特性,括号中为对应的文字描述。

2. 添加描述特性

需要引用System.ComponentModel命名空间,使用DescriptionAttribute类为枚举成员添加描述特性,示例代码如下:

using System.ComponentModel;

public enum Gender
{
    [Description("未知")]
    Unknown = 0,
    [Description("男性")]
    Male = 1,
    [Description("女性")]
    Female = 2
}

3. 获取枚举成员的描述特性

通过Type类的静态方法GetField获取枚举成员的FieldInfo对象,再通过FieldInfo对象的GetCustomAttribute方法获取特性对象,最后通过特性对象的Description属性获取特性描述文字。

示例代码如下:

Gender gender = Gender.Female;
FieldInfo fieldInfo = typeof(Gender).GetField(gender.ToString());
DescriptionAttribute attribute = Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute)) as DescriptionAttribute;
string description = attribute.Description;
Console.WriteLine(description);  // 输出:女性

另外,也可以定义一个扩展方法,简化获取枚举成员描述的代码。示例代码如下:

using System.ComponentModel;
using System.Reflection;

public static class EnumExtensions
{
    public static string GetDescription(this Enum value)
    {
        FieldInfo fieldInfo = value.GetType().GetField(value.ToString());
        DescriptionAttribute attribute = Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute)) as DescriptionAttribute;
        return attribute == null ? value.ToString() : attribute.Description;
    }
} 

Gender gender = Gender.Male;
string description = gender.GetDescription();
Console.WriteLine(description);  // 输出:男性

以上是C#给枚举类型增加描述特性的攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#如何给枚举类型增加一个描述特性详解 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#实现基于IE内核的简单浏览器完整实例

    C#实现基于IE内核的简单浏览器完整实例 简介 本篇攻略将介绍如何使用C#实现基于IE内核的简单浏览器。 推荐工具 Visual Studio 2019 .NET Framework 4.7.2 实现步骤 step1:创建项目 在Visual Studio 2019中创建一个Windows Forms应用程序项目。 step2:添加WebBrowser控件 …

    C# 2023年6月1日
    00
  • ASP.NET MVC实现登录后跳转到原界面

    ASP.NET MVC实现登录后跳转到原界面的完整攻略如下: 首先,在需要登录才能访问的控制器或方法上添加[Authorize]特性。例如: [Authorize] public class HomeController : Controller { public ActionResult Index() { return View(); } } 这样,当用…

    C# 2023年5月12日
    00
  • C# AddRange(ICollection):将 ICollection 中的元素添加到集合中

    C#中的AddRange方法用于将一个集合的元素添加到另一个集合中。其定义如下: public void AddRange(ICollection collection) 可以看到,它接受一个ICollection类型的参数,也就是说可以接收任何实现ICollection接口的类的对象,比如List、HashSet、Queue等等。 具体使用方法如下: Li…

    C# 2023年4月19日
    00
  • C#中的char与string详解

    C#中的char与string详解 什么是char? char是C#的一种数据类型,它代表一个单一的字符。每个char变量都使用单引号(”)来表示。 以下是一个使用char的示例 char myChar = ‘a’; 在上面的示例中,我们定义了一个名为myChar的变量,并将它的值设置为小写字母’a’。 什么是string? string是C#的一种数据类…

    C# 2023年6月8日
    00
  • C#中HttpWebRequest的用法详解

    C#中HttpWebRequest的用法详解 什么是HttpWebRequest HttpWebRequest是.NET Framework下的类,它提供了让用户使用HTTP协议进行数据交互的API。HttpWebRequest可以用于发送与API的交互、远程服务调用等操作。 HttpWebRequest类关键属性和方法 属性 Headers Headers…

    C# 2023年5月31日
    00
  • C#12预览版释出,新功能一览

    概述 C#是微软开发的一种流行的编程语言,广泛用于开发桌面,Web和移动应用程序。在每个新版本中,C# 都会带来令人兴奋的功能和改进,使其更强大、更具表现力和更高效。C# 的最新版本是2022年发布的 C#11,它引入了一系列新功能,例如abstract 和 virtual 引入到静态方法中、泛型 attribute等。现在,微软已经在开发下一个版本的C#,…

    C# 2023年4月19日
    00
  • 详解Winform里面的缓存使用

    在Winform中,缓存是一种常用的技术,用于提高应用程序的性能和响应速度。本文将提供详细的“详解Winform里面的缓存使用”的完整攻略,包括什么是缓存、为什么要使用缓存、如何使用缓存以及两个示例。 什么是缓存? 缓存是一种将数据存储在内存中的技术,以便在需要时快速访问数据。缓存可以提高应用程序的性能和响应速度,因为从内存中读取数据比从磁盘或网络中读取数据…

    C# 2023年5月15日
    00
  • CAD二次开发,安装程序中写注册表

    一、加载dll时写注册表 我们知道,dll加载到cad中后使用 HostApplicationServices.Current.RegistryProductRootKey() 就可以拿到当前cad的注册表,那么如果想在安装程序时写,此时并没有cad的环境,要怎么办呢? 二、获取所有已安装的cad的注册表路径 cad在安装后,会在注册表的计算机\HKEY_L…

    C# 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部