最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在.NET Core中獲取枚舉值中文描述的方法詳解

 更新時(shí)間:2025年10月16日 09:07:07   作者:MartinYangHJ  
這篇文章主要為大家詳細(xì)介紹了在.NET Core中獲取枚舉值中文描述的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

Net項(xiàng)目中有如下枚舉值:

public enum UserStatus
{
    [Description("未激活")]
    Inactive = 0,
    
    [Description("已激活")]
    Active = 1,
    
    [Description("已禁用")]
    Disabled = 2,
    
    [Description("待審核")]
    Pending = 3
}

請問,如何獲取其中某一個(gè)枚舉值的描述呢?

在 .NET Core 中獲取枚舉值的中文描述,可以通過以下步驟實(shí)現(xiàn):

1. 創(chuàng)建自定義特性

using System;

/// <summary>
/// 枚舉描述特性
/// </summary>
public class DescriptionAttribute : Attribute
{
    public string Description { get; }

    public DescriptionAttribute(string description)
    {
        Description = description;
    }
}

2. 定義使用中文描述的枚舉

public enum UserStatus
{
    [Description("未激活")]
    Inactive = 0,
    
    [Description("已激活")]
    Active = 1,
    
    [Description("已禁用")]
    Disabled = 2,
    
    [Description("待審核")]
    Pending = 3
}

3. 創(chuàng)建擴(kuò)展方法

using System;
using System.ComponentModel;
using System.Reflection;

public static class EnumExtensions
{
    /// <summary>
    /// 獲取枚舉值的描述
    /// </summary>
    /// <param name="value">枚舉值</param>
    /// <returns>描述信息</returns>
    public static string GetDescription(this Enum value)
    {
        if (value == null)
            return string.Empty;

        var field = value.GetType().GetField(value.ToString());
        if (field == null)
            return value.ToString();

        // 嘗試獲取DescriptionAttribute
        var attribute = field.GetCustomAttribute<DescriptionAttribute>();
        if (attribute != null)
            return attribute.Description;

        // 如果沒有DescriptionAttribute,返回枚舉名稱
        return value.ToString();
    }

    /// <summary>
    /// 獲取枚舉類型的所有值和描述
    /// </summary>
    /// <typeparam name="T">枚舉類型</typeparam>
    /// <returns>值和描述的字典</returns>
    public static Dictionary<int, string> GetEnumDescriptions<T>() where T : Enum
    {
        var result = new Dictionary<int, string>();
        var values = Enum.GetValues(typeof(T));

        foreach (T value in values)
        {
            result.Add(Convert.ToInt32(value), value.GetDescription());
        }

        return result;
    }

     /// <summary>
     /// 獲取枚舉類型的所有值和描述
     /// </summary>
     /// <typeparam name="T">枚舉類型</typeparam>
     /// <returns>值和描述的字典</returns>
     public static Dictionary<T, string> GetEnumDescriptionsDict<T>() where T : Enum
     {
         return Enum.GetValues(typeof(T))
                    .Cast<T>()
                    .ToDictionary(e => e, e => e.GetDescription());
     }
}

4. 使用示例

Console.WriteLine("Hello, World!");

// 示例1:獲取單個(gè)枚舉值的描述
UserStatus status = UserStatus.Active;
string description = status.GetDescription();
Console.WriteLine($"狀態(tài)描述: {description}"); // 輸出: 狀態(tài)描述: 已激活

// 示例2:遍歷所有枚舉值
foreach (UserStatus value in Enum.GetValues(typeof(UserStatus)))
{
    Console.WriteLine($"{value}: {value.GetDescription()}");
}

// 示例3:獲取所有枚舉值的字典
var statusDict = EnumExtensions.GetEnumDescriptions<UserStatus>();
foreach (var item in statusDict)
{
    Console.WriteLine($"值: {item.Key}, 描述: {item.Value}");
}
Console.ReadKey();

打印結(jié)果:

Hello, World!
狀態(tài)描述: 已激活
Inactive: 未激活
Active: 已激活
Disabled: 已禁用
Pending: 待審核
值: 0, 描述: 未激活
值: 1, 描述: 已激活
值: 2, 描述: 已禁用
值: 3, 描述: 待審核

5. 替代方案:使用 System.ComponentModel.DescriptionAttribute

如果不想創(chuàng)建自定義特性,也可以直接使用 .NET 內(nèi)置的 DescriptionAttribute,代碼如下:

using System.ComponentModel;

public enum UserStatus
{
    [Description("未激活")]
    Inactive = 0,
    
    [Description("已激活")]
    Active = 1
}

// 修改擴(kuò)展方法中的引用
public static class EnumExtensions
{
    public static string GetDescription(this Enum value)
    {
        if (value == null)
            return string.Empty;

        var field = value.GetType().GetField(value.ToString());
        if (field == null)
            return value.ToString();

        // 使用System.ComponentModel.DescriptionAttribute
        var attribute = field.GetCustomAttribute<DescriptionAttribute>();
        if (attribute != null)
            return attribute.Description;

        return value.ToString();
    }
}

到此這篇關(guān)于在.NET Core中獲取枚舉值中文描述的方法詳解的文章就介紹到這了,更多相關(guān).NET Core獲取枚舉值中文描述內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MVC實(shí)現(xiàn)下拉框聯(lián)動效果(單選)

    MVC實(shí)現(xiàn)下拉框聯(lián)動效果(單選)

    這篇文章主要為大家詳細(xì)介紹了MVC實(shí)現(xiàn)下拉框聯(lián)動效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 告別ADO.NET實(shí)現(xiàn)應(yīng)用系統(tǒng)無縫切換的煩惱(總結(jié)篇)

    告別ADO.NET實(shí)現(xiàn)應(yīng)用系統(tǒng)無縫切換的煩惱(總結(jié)篇)

    說起ADO.NET,就扯上了數(shù)據(jù)庫訪問類庫了,現(xiàn)在的每個(gè)項(xiàng)目的數(shù)據(jù)庫訪問類應(yīng)該說都很強(qiáng)的了,經(jīng)常就聽到說我的我們的數(shù)據(jù)庫訪問類怎么怎么強(qiáng)大而且支持多數(shù)據(jù)庫,現(xiàn)在的大家做的項(xiàng)目里用的數(shù)據(jù)庫訪問類庫我想也都是支持多數(shù)據(jù)庫吧,支持到什么程度我就不知道了
    2009-11-11
  • 創(chuàng)建基于ASP.NET的SMTP郵件服務(wù)的具體方法

    創(chuàng)建基于ASP.NET的SMTP郵件服務(wù)的具體方法

    Asp.net在System.Web.Mail名稱空間中有一個(gè)發(fā)送email的內(nèi)建類,但這僅是cdosys的一個(gè)假象。開發(fā)者能使用一個(gè)替代的它smtp郵件服務(wù)。在這篇文章里面,我將會展示如何創(chuàng)建一個(gè)用于asp.net的功能齊全的smtp郵件服務(wù)
    2013-11-11
  • 學(xué)習(xí)使用ASP.NET 2.0的本地化

    學(xué)習(xí)使用ASP.NET 2.0的本地化

    學(xué)習(xí)使用ASP.NET 2.0的本地化...
    2007-04-04
  • ASP.NET MVC3關(guān)于生成純靜態(tài)后如何不再走路由直接訪問靜態(tài)頁面

    ASP.NET MVC3關(guān)于生成純靜態(tài)后如何不再走路由直接訪問靜態(tài)頁面

    高訪問量類型的電子商務(wù)網(wǎng)站,需要將一些不是經(jīng)常變化的頁面生成靜態(tài)頁面,然后普通用戶就可以直接訪問這些靜態(tài)頁面而不用再訪問需要連接數(shù)據(jù)庫的動態(tài)頁面。那么ASP.NET MVC3中如何做到這一點(diǎn)呢
    2011-12-12
  • .Net Core項(xiàng)目如何添加日志功能詳解

    .Net Core項(xiàng)目如何添加日志功能詳解

    這篇文章主要給大家介紹了關(guān)于.Net Core項(xiàng)目如何添加日志功能的相關(guān)資料,日志功能是我們開發(fā)中經(jīng)常需要用到的一個(gè)功能,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • asp.net中js和jquery調(diào)用ashx的不同方法分享

    asp.net中js和jquery調(diào)用ashx的不同方法分享

    asp.net中js和jquery調(diào)用ashx的不同方法分享,需要的朋友可以參考一下
    2013-06-06
  • .NET簡單工廠模式講解

    .NET簡單工廠模式講解

    這篇文章主要為大家詳細(xì)介紹了ASP.NET簡單工廠模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • ASP.NET使用ajax實(shí)現(xiàn)分頁局部刷新頁面功能

    ASP.NET使用ajax實(shí)現(xiàn)分頁局部刷新頁面功能

    使用ajax方法實(shí)現(xiàn)分頁也很簡單,主要是兩個(gè),ContentTemplate和Trigger。先把listView扔ContentTemplate里面。然后在Trigger里面加入asp:AsyncPostBackTrigger,將ID指向之前的分頁控件DataPager控件。具體實(shí)現(xiàn)代碼大家可以參考下本文
    2017-03-03
  • .Net Core路由處理的知識點(diǎn)與方法總結(jié)

    .Net Core路由處理的知識點(diǎn)與方法總結(jié)

    這篇文章主要給大家介紹了關(guān)于.Net Core路由處理的知識點(diǎn)與方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論

和林格尔县| 精河县| 舞阳县| 平凉市| 博爱县| 丰城市| 鲁山县| 敖汉旗| 孝昌县| 临桂县| 拜泉县| 绥芬河市| 吉安市| 弋阳县| 逊克县| 饶阳县| 阿克陶县| 马尔康县| 区。| 广水市| 遵义县| 安泽县| 马公市| 建湖县| 芦山县| 常熟市| 龙泉市| 阿合奇县| 南雄市| 越西县| 平湖市| 绥德县| 开阳县| 化德县| 剑河县| 清新县| 本溪市| 西城区| 奉节县| 永登县| 金华市|