欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

分享4個常用C#枚舉擴(kuò)展方法,包括字符串轉(zhuǎn)枚舉和數(shù)字轉(zhuǎn)枚舉等,讓枚舉在實(shí)際應(yīng)用中更加靈活

admin
2024年11月27日 9:18 本文熱度 688

前言

嗨,大家好!

在 C# 的世界里,枚舉(Enum)讓我們可以用更直觀的方式來表示一組相關(guān)的常量,比如 HTTP 方法、狀態(tài)碼等。

通過擴(kuò)展方法,我們可以為枚舉賦予更多的功能,使其在實(shí)際應(yīng)用中更加靈活。

今天,我們要分享的就是 4 個我在工作中常用的枚舉擴(kuò)展方法:獲取枚舉描述、描述轉(zhuǎn)枚舉、字符串轉(zhuǎn)枚舉和數(shù)字轉(zhuǎn)枚舉等。

這些方法在我的工作中幫助挺大的,希望對你也有所啟發(fā),讓我們一起來看看吧!

枚舉擴(kuò)展方法

以下是完整的枚舉擴(kuò)展方法,留意代碼中的注釋

public static class EnumUtil
{
    /// <summary>
    /// 獲取枚舉描述
    /// </summary>
    /// <param name="value"></param>
    /// <returns></returns>
    public static string ToDescription(this Enum value)
    {
        if (value == nullreturn "";

        System.Reflection.FieldInfo fieldInfo = value.GetType().GetField(value.ToString());

        object[] attribArray = fieldInfo.GetCustomAttributes(false);
        if (attribArray.Length == 0)
        {
            return value.ToString();
        }
        else
        {
            return (attribArray[0as DescriptionAttribute).Description;
        }
    }

    /// <summary>
    /// 根據(jù)描述獲取枚舉值
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="description"></param>
    /// <returns></returns>
    public static T GetEnumByDescription<T>(this string description) where T : Enum
    {
        if (!string.IsNullOrWhiteSpace(description))
        {
            System.Reflection.FieldInfo[] fields = typeof(T).GetFields();
            foreach (System.Reflection.FieldInfo field in fields)
            {
                //獲取描述屬性
                object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);    
                if (objs.Length > 0 && (objs[0as DescriptionAttribute).Description == description)
                {
                    return (T)field.GetValue(null);
                }
            }
        }

        throw new ArgumentException(string.Format("{0} 未能找到對應(yīng)的枚舉.", description), "Description");
    }

    /// <summary>
    /// 數(shù)字轉(zhuǎn)枚舉
    /// </summary>
    /// <returns></returns>
    public static T ToEnum<T>(this int intValue) where T : Enum
    {
        return (T)Enum.ToObject(typeof(T), intValue);
    }

    /// <summary>
    /// 字符串轉(zhuǎn)枚舉
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="enumString"></param>
    /// <returns></returns>
    public static T ToEnum<T>(this string enumString) where T : Enum
    {
        return (T)Enum.Parse(typeof(T), enumString);
    }
}

使用

1. 創(chuàng)建枚舉

首先,我們來定義一個枚舉,表示 HTTP 方法類型:

public enum HttpMethodType
{
    [Description("查詢數(shù)據(jù)")]
    GET = 1,
    [Description("保存數(shù)據(jù)")]
    POST = 2,
    [Description("更新數(shù)據(jù)")]
    PUT = 3,
    [Description("刪除數(shù)據(jù)")]
    DELETE = 4
}
2. 使用擴(kuò)展方法

接下來,我們在 Program.cs 文件里使用這些擴(kuò)展方法:

using EumnSample;

// 1. 獲取枚舉的描述
HttpMethodType httpMethodType = HttpMethodType.GET;
string getMethodDesc = httpMethodType.ToDescription();
Console.WriteLine(getMethodDesc);

// 2. 根據(jù)描述獲取相應(yīng)的枚舉
string postMethodDesc = "保存數(shù)據(jù)";
HttpMethodType postMethodType = postMethodDesc.GetEnumByDescription<HttpMethodType>();
Console.WriteLine(postMethodType.ToString());

// 3. 根據(jù)枚舉名稱獲取相應(yīng)的枚舉
string putMethodStr = "PUT";
HttpMethodType putMethodType = putMethodStr.ToEnum<HttpMethodType>();
Console.WriteLine(putMethodType.ToString());

// 4. 根據(jù)枚舉的值獲取相應(yīng)的枚舉
int delMethodValue = 4;
HttpMethodType delMethodType = delMethodValue.ToEnum<HttpMethodType>();
Console.WriteLine(delMethodType.ToString());
3. 運(yùn)行

運(yùn)行程序,即可看到枚舉擴(kuò)展方法的強(qiáng)大功能,如圖所示:

總結(jié)

通過這幾個枚舉擴(kuò)展方法,我們可以更加靈活地操作枚舉,讓代碼更加優(yōu)雅和高效。


該文章在 2024/11/27 9:18:52 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財務(wù)費(fèi)用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved