C#中如何为枚举类型添加描述方法【小技巧】

要为C#中的枚举类型添加描述方法,可以采用以下方法:

1.使用System.ComponentModel.DescriptionAttribute类

using System.ComponentModel;

public enum Gender
{
    [Description("男性")]
    Male,

    [Description("女性")]
    Female,

    [Description("未知")]
    Unknown
}

上述代码中,我们使用了DescriptionAttribute类,将枚举的各个值添加了对应的中文描述。

那么在代码中如何获取枚举值的描述呢?

public static string GetEnumDescription(Enum value)
{
    Type type = value.GetType();
    string name = Enum.GetName(type, value);
    FieldInfo field = type.GetField(name);
    object[] attrs = field.GetCustomAttributes(typeof(DescriptionAttribute), true);
    if (attrs.Length > 0)
    {
        var attr = attrs[0] as DescriptionAttribute;
        if (attr != null)
        {
            return attr.Description;
        }
    }
    return name;
}

上述代码中,我们定义了一个静态方法GetEnumDescription,它可以返回任何枚举类型的值所对应的中文描述。当然,如果枚举值没有对应的中文描述,那么它会返回该枚举值的名称。

2.使用System.ComponentModel.DataAnnotations.DisplayAttribute类

using System.ComponentModel.DataAnnotations;

public enum Gender
{
    [Display(Name = "男性")]
    Male,

    [Display(Name = "女性")]
    Female,

    [Display(Name = "未知")]
    Unknown
}

上述代码中,我们使用了DisplayAttribute类,将枚举的各个值添加了对应的中文描述。

那么在代码中如何获取枚举值的描述呢?

using System.Reflection;

public static string GetEnumDisplayName(Enum value)
{
    Type type = value.GetType();
    string name = Enum.GetName(type, value);
    FieldInfo field = type.GetField(name);
    object[] attrs = field.GetCustomAttributes(typeof(DisplayAttribute), true);
    if (attrs.Length > 0)
    {
        var attr = attrs[0] as DisplayAttribute;
        if (attr != null)
        {
            return attr.GetName();
        }
    }
    return name;
}

上述代码中,我们定义了一个静态方法GetEnumDisplayName,它可以返回任何枚举类型的值所对应的中文描述。当然,如果枚举值没有对应的中文描述,那么它会返回该枚举值的名称。

以上就是为C#中的枚举类型添加描述方法的完整攻略,希望能够对您有所帮助。

阅读剩余 45%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#中如何为枚举类型添加描述方法【小技巧】 - Python技术站

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

相关文章

  • C#之Expression表达式树实例

    C#之Expression表达式树实例 简介 Expression表达式树是C#中一种强大的语言特性,可以通过表达式树实现动态构建Lambda表达式,让开发者可以在运行时动态的创建查询、过滤、排序等功能,大大提高了程序的灵活性。本文将详细讲解如何使用Expression表达式树实现常见的功能。 示例一:动态查询 如下是一个简单的Person类: public…

    C# 2023年6月1日
    00
  • C# BinaryReader实现读取二进制文件

    下面是“C# BinaryReader实现读取二进制文件”的完整攻略: 1. 什么是BinaryReader BinaryReader是C#中的一个类,它可以帮助我们快速读取二进制文件中的数据。BinaryReader提供了一系列方法,以便我们能够读取基本类型的数据(如int、float、double等)和字符串等其他类型的数据。我们可以使用BinaryRe…

    C# 2023年6月1日
    00
  • c# 计算时间间隔的简单方法(推荐)

    C# 计算时间间隔的简单方法(推荐) 在C#编程中,通常需要计算时间间隔。例如:计算程序运行时间、计算任务执行时间等等。下面展示一种简单但是实用的方法,可以便捷地计算时间间隔。 使用Stopwatch类 Stopwatch类是专门用于计时的类,和DateTime.Now, DateTime.Ticks等类有很大区别,能更加准确地计算时间间隔。下面介绍Stop…

    C# 2023年6月1日
    00
  • C#利用反射来判断对象是否包含某个属性的实现方法

    可以通过反射来动态获取和设置对象的属性值。在C#中,可以使用反射判断某个对象是否包含某个特定属性。下面是使用反射来判断对象是否包含某个属性的实现方法: 1.获取类型对象 使用反射,首先需要获取代表要分析的类型的Type对象。可以通过以下两种方法实现: 使用类型名字符串: Type type = Type.GetType(“命名空间.类名”); 直接通过类类型…

    C# 2023年6月1日
    00
  • 一起聊聊C++中的特殊成员函数

    下面我将详细讲解一下C++中特殊成员函数的相关知识。 一起聊聊C++中的特殊成员函数 什么是特殊成员函数 在C++中,除了一些普通的成员函数,还有一些被称为特殊成员函数的成员函数。这些特殊成员函数包括: 默认构造函数 拷贝构造函数 移动构造函数 拷贝赋值运算符 移动赋值运算符 析构函数 这些函数被称为特殊成员函数的原因是它们都在特定的情况下被自动调用,无需显…

    C# 2023年6月8日
    00
  • C# 字节数组、各进制字符串数据互转

    前言 日常开发过程中,格式转换是必不可少的重要环节,经常是十进制转十六进制、十六进制转byte数组又转换回来来回转换,最然进制转换很基础同时 C# 也提供了很多直接方便进行格式转换的方法,但是封装一个工具类会方便很多,不用每次都手写代码逻辑,之前一直都是简单的自己写,稍复杂的就用前辈写好的直接调用,这次自己写一个。 简单的定义为一行代码完事,多一行都不写?。…

    C# 2023年5月5日
    00
  • C#中AS和IS关键字的用法

    C#中AS和IS关键字分别用于类型转换和类型判断。本攻略将详细介绍这两个关键字的语法和用法。 AS关键字 AS关键字用于将一个对象转换成指定类型,如果转换失败则返回null。AS关键字的语法如下: object as Type 其中,object是待转换对象的名称,Type是目标类型。AS关键字的使用示例如下: class Animal { public v…

    C# 2023年6月6日
    00
  • C#中自定义高精度Timer定时器的实例教程

    C#中自定义高精度Timer定时器的实例教程 1. 需求背景 假设我们需要编写一个程序,其中需要在指定的时间间隔内定时执行某个任务,这时我们可以使用系统提供的Timer类来实现,但是,由于Windows系统本身就存在一些限制,因此Timer的精度存在一定的限制,不够高。为了解决这个问题,我们需要自定义高精度Timer定时器。 2. 实现思路 为了实现高精度T…

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