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日

相关文章

  • VSCode配置C#运行环境的完整步骤

    下面是VSCode配置C#运行环境的完整步骤攻略。 一、安装 .NET Core SDK 首先我们需要安装 .NET Core SDK,这是 .NET Core 的主要开发框架,它提供了用于构建和运行 C# 应用程序所需的工具和环境。我们可以前往 官网 下载适合自己操作系统版本的 .NET Core SDK。 安装完成后,我们可以在控制台(或者终端)输入 d…

    C# 2023年6月7日
    00
  • ASP.NET如何定时调用WebService服务

    ASP.NET 定时调用 WebService 有多种实现方式,其中比较常用的有使用定时器 Timer 和使用 Quartz.NET 两种。下面分别给出两种方式的示例说明。 使用定时器 Timer 实现定时调用 WebService 使用 System.Windows.Forms.Timer 实现,在 WebForm 或 Windows 窗口应用程序中可以轻…

    C# 2023年6月3日
    00
  • asp.net Md5的用法小结

    下面是关于 ASP.NET Md5 的用法的完整攻略。 什么是 Md5 Md5 是一种密码(或者叫散列)算法,用来对任意长度的数据进行加密,生成一个唯一的固定长度(128 位)的 Hash 值。因为 Md5 生成的 Hash 值几乎不会重复,因此在密码验证、防篡改等场景中被广泛应用。 Asp.net Md5 的使用方式 Asp.net 提供了 System.…

    C# 2023年5月31日
    00
  • .NET 6开发TodoList应用实现结构搭建

    下面是详细讲解“.NET 6开发TodoList应用实现结构搭建”的完整攻略。 1. 概述 在本教程中,我们将使用.NET 6和C#构建一个简单的ToDoList应用程序。这个应用程序将包括一个基本的用户界面,允许用户创建、修改和删除待办任务。 我们将使用ASP.NET Core MVC框架来构建TodoList应用程序,并将其连接到一个SQLite数据库。…

    C# 2023年6月3日
    00
  • C# Math.Max()方法: 返回两个数中较大的那个数

    C# Math.Max() 函数 Math.Max() 函数返回两个数字中较大的那个数字。 该函数需要两个参数,都必须是数字类型,可以是字符、short、int、long、ushort、uint、ulong、float、double、decimal 和 sbyte 类型的实例。 注意:如果您尝试在两个数字之间调用一个字符串,那么会引发运行时异常 System…

    C# 2023年4月19日
    00
  • abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)

     Abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二) abp(net core)+easyui+efcore实现仓储管理系统——领域层创建实体(三…

    C# 2023年4月17日
    00
  • C#中使用闭包与意想不到的坑详解

    C#中使用闭包与意想不到的坑详解 什么是闭包 在C#中,闭包是一个由函数和与其相关的引用环境组合而成的实体。具体地说,闭包函数可以访问其定义域之外的变量,即自由变量,这些变量与函数一同存在于一个闭包里。 C#中闭包的使用 C#中,使用闭包可以方便地共享变量和保持状态。例如下面的代码: public Action GetClosureAction() { va…

    C# 2023年6月6日
    00
  • CommunityToolkit.Mvvm8.1 MVVM工具包安装引用指南(1)

      本系列文章导航 https://www.cnblogs.com/aierong/category/2297596.html     0.说明 CommunityToolkit.Mvvm包(又名MVVM 工具包,以前名为 Microsoft.Toolkit.Mvvm)是一个现代、快速且模块化的 MVVM 库。它支持:.NET Standard 2.0、 .…

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