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# DataTable分页处理实例代码

    下面是“C# DataTable分页处理实例代码”的完整攻略: 什么是DataTable分页处理? DataTable是.NET Framework中的一个非常重要的数据对象,它可以用来存储和操作数据。很多时候,我们需要在规模较大的数据集中只提取部分数据进行显示,这时就需要进行分页处理。 如何进行DataTable分页处理? 在C#中,可以通过以下步骤来进行…

    C# 2023年5月31日
    00
  • 浅谈static a[n*m]={0};中static的作用

    我们来详细讲解一下在C/C++中,声明静态数组时使用static关键字的作用。 首先,我们需要明确一下,在C/C++中,静态数组有以下两种声明方式: 通过在函数中声明静态数组 void myFunction(){ static int arr[10] = {0}; // do something with arr } 在文件的全局作用域中声明静态数组 sta…

    C# 2023年5月15日
    00
  • C# CopyTo(T[],Int32):从特定的索引开始将元素复制到数组中

    C#中的CopyTo(T[],Int32)方法是将调用该方法的数组中所有元素复制到另一个T类型数组中,从指定索引位置开始复制。其中,T表示要复制的数组元素的类型;Int32则表示复制的起始索引,该值可为0或其他正整数,但不得大于目标数组的长度。 该方法的完整格式为:public void CopyTo(T[] array, int index) 下面以两个示…

    C# 2023年4月19日
    00
  • C#关于System.Collections空间详解

    C#关于System.Collections空间详解 简介 System.Collections是一个命名空间,包含一组接口和类,用于定义集合的通用构造和算法。System.Collections是C#内置的原生集合框架,相当于Java中的集合类库。在C#中,强烈推荐使用System.Collections,而不是手动编写集合算法。 术语 在学习System…

    C# 2023年5月31日
    00
  • C#基于纯数学方法递归实现货币数字转换中文功能详解

    C#基于纯数学方法递归实现货币数字转换中文功能 简介 本文将介绍如何基于纯数学方法及递归算法来实现C#中将货币数值转换为中文汉字的功能。 前置知识 在开始之前,您需要掌握以下C#基础知识: 程序流程控制语句 递归算法 同时您需要了解以下汉字中的数字: 个位数:零、一、二、三、四、五、六、七、八、九 十位数:十、二十、三十、四十、五十、六十、七十、八十、九十 …

    C# 2023年6月7日
    00
  • C#中Dapper的使用教程

    下面就为大家详细讲解一下 C# 中 Dapper 的使用教程。 什么是 Dapper? Dapper 是一个轻量级 ORM(Object Relational Mapping)框架。它为 SQL Server、MySQL、Oracle 和 PostgreSQL 提供了一套高效处理 SQL 语句的方法。它采用 Object 与关系数据库之间的映射模型,使开发人…

    C# 2023年5月31日
    00
  • .NET 个人博客系统

    前言 之前通过github学习了一个.net core的博客项目,最近也是完成了博客的备案,完善了一下。该项目是传统的MVC项目,可以进行主题的切换,采用Bootstrap进行前台页面的展示,有配套的后台管理系统,可以解析Markdown文件。 参观地址 ZY知识库可以将个人的意见评论到该文章,我可以采纳采纳。 采用技术 后端:.NET Core ORM:E…

    C# 2023年4月18日
    00
  • PHP中配置IIS7实现基本身份验证的方法

    在PHP中配置IIS7实现基本身份验证的方法如下: 打开IIS管理器,选择要配置身份验证的站点,右键选择“编辑权限”。 在“安全”选项卡中,单击“编辑”按钮,打开“权限”对话框。 在“权限”对话框中,单击“添加”按钮,添加一个新的用户或组。 在“选择用户、计算机、服务帐户或组”对话框中,输入要添加的用户或组的名称,单击“检查名称”按钮,确保名称正确。 单击“…

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