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#中的枚举类型添加描述方法的完整攻略,希望能够对您有所帮助。

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

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

相关文章

  • C#中的ICustomFormatter及IFormatProvider接口用法揭秘

    下面是关于”C#中的ICustomFormatter及IFormatProvider接口用法揭秘”的详细攻略。 什么是ICustomFormatter及IFormatProvider接口 在C#中,ICustomFormatter及IFormatProvider接口是用于格式化字符串的两个重要接口。 对于使用C#进行编程的开发者而言,需要了解这两个接口的主要…

    C# 2023年5月15日
    00
  • C#百万数据查询出现超时问题的解决方法

    Alright,针对“C#百万数据查询出现超时问题的解决方法”的问题,我们可以考虑以下两个方面进行优化。 1.程序性能优化 2.数据库设计优化 下面将详细解释这两个方面的具体操作步骤。 1. 程序性能优化 1.1. 使用分页查询 针对大数据集合的查询,我们可以使用分页的方式进行查询。以每次查询 10000 条记录进行分页,将数据分成多个 10000 的批次,…

    C# 2023年5月15日
    00
  • ASP.NET Core新建项目教程(3)

    ASP.NET Core是一款开源的跨平台轻量级Web开发框架,可以帮助开发者快速构建高性能、可扩展、易维护的Web应用程序。在本篇文章中,我们将讲解ASP.NET Core的新建项目教程。该教程包括以下内容: 1. 环境配置 在开始创建ASP.NET Core项目之前,我们需要安装 .NET Core SDK。安装后,在命令行中运行dotnet指令,如果输…

    C# 2023年6月3日
    00
  • 为Xamarin.Forms的导航栏增加搜索功能

    为 Xamarin.Forms 的导航栏增加搜索功能攻略 在 Xamarin.Forms 中,可以为导航栏增加搜索功能,以便用户可以快速查找所需的内容。本攻略将介绍如何为 Xamarin.Forms 的导航栏增加搜索功能。 步骤 步骤1:创建搜索页 首先,需要创建一个搜索页,以便用户可以在其中输入搜索关键字。可以使用以下代码创建一个名为 SearchPage…

    C# 2023年5月17日
    00
  • System.Data.OleDb.OleDbException: 未指定的错误的完美解决方法

    System.Data.OleDb.OleDbException: 未指定的错误 对于这个错误,一般是由于OleDbDataAdapter执行Fill方法时出现了某种异常。它可能是由于以下原因之一: SQL查询或其他数据库操作语句有语法错误。 数据库中的表或字段不存在。 数据类型不匹配。 数据库连接出现问题或者权限不足。 针对这种类型的错误,我们可以采取如下…

    C# 2023年5月15日
    00
  • .NET Core类库项目中读取appsettings.json配置的方法

    首先,需要在.NET Core类库项目中引用Microsoft.Extensions.Configuration.Json包。可以通过NuGet包管理器或者NuGet控制台安装。 接下来,创建appsettings.json文件,并添加所需的配置信息,如下所示: { "AppSettings": { "ConnectionStr…

    C# 2023年6月3日
    00
  • C# dynamic关键字的使用方法

    当我们使用 C# 编程时,有时候我们不清楚某个变量的具体类型,或者需要在运行时动态判断变量类型进行操作,此时就可以使用 dynamic 关键字。dynamic 关键字通常用于动态语言的场景,如脚本语言等,它允许我们实现一些动态的行为。 下面是使用 dynamic 关键字的一些注意事项: 1. dynamic 关键字的使用 使用 dynamic 关键字声明一个…

    C# 2023年5月15日
    00
  • 将ocx文件转换成C#程序引用的DLL文件的办法

    将OCX文件转换成C#程序引用的DLL文件的过程,是一个比较复杂的过程,需要使用一些专门的工具来实现。下面是一个完整的攻略,教你如何将OCX文件转换成C#程序引用的DLL文件。 1. 安装OCX转换工具 首先,你需要安装一个OCX转换工具。这里我们选择使用OCX to DLL转换工具(OCX2DLL)。 你可以在网上下载OCX2DLL工具,然后按照安装程序的…

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