欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解C#如何將枚舉以下拉數(shù)據(jù)源的形式返回給前端

 更新時(shí)間:2023年06月08日 14:08:46   作者:沈威  
這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)將枚舉以下拉數(shù)據(jù)源的形式返回給前端,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下

前言

相信各位有碰到過(guò)與我類似的問(wèn)題,當(dāng)表中存一些狀態(tài)的字段,無(wú)非以下幾種形式1.直接寫(xiě)死 如: 正常:1,異常:2 ,還有一種則是寫(xiě)在字典中,再或者就是加在枚舉上,前兩者對(duì)于返回下拉數(shù)據(jù)源來(lái)說(shuō)比較好處理,直接寫(xiě)死和查數(shù)據(jù)庫(kù),但都有各自的缺點(diǎn),寫(xiě)死維護(hù)比較麻煩,查數(shù)據(jù)庫(kù)也沒(méi)必要,這個(gè)時(shí)候枚舉就可以解決這個(gè)問(wèn)題.

實(shí)現(xiàn)邏輯

要返回一個(gè)List<StartStateEnum>,其中包含枚舉類型StartStateEnum的所有字段值,你可以使用反射來(lái)實(shí)現(xiàn)。以下是一個(gè)示例代碼,演示了如何將枚舉類型中的字段值添加到集合并返回:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
public class Program
{
    public enum StartStateEnum
    {
        [Description("啟動(dòng)")]
        Start = 0,
        [Description("未啟動(dòng)")]
        NotStart = 1
    }
    public static void Main(string[] args)
    {
        // 獲取枚舉字段值的集合
        List<StartStateEnum> enumValues = GetEnumValues<StartStateEnum>();
        // 輸出集合中的字段值
        foreach (var value in enumValues)
        {
            Console.WriteLine(value);
        }
    }
    public static List<T> GetEnumValues<T>()
    {
        // 獲取枚舉類型
        Type enumType = typeof(T);
        // 驗(yàn)證是否為枚舉類型
        if (!enumType.IsEnum)
        {
            throw new ArgumentException("The specified type is not an enum.");
        }
        // 獲取枚舉中的所有字段
        FieldInfo[] fields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
        // 存儲(chǔ)字段值的集合
        List<T> enumValues = new List<T>();
        // 遍歷字段并添加字段值到集合
        foreach (var field in fields)
        {
            if (field.FieldType == enumType)
            {
                T value = (T)field.GetValue(null);
                enumValues.Add(value);
            }
        }
        return enumValues;
    }
}

在上述示例中,我們定義了一個(gè)名為StartStateEnum的枚舉類型,其中包含了兩個(gè)值:StartNotStart。每個(gè)值都具有一個(gè)DescriptionAttribute,其中包含了對(duì)應(yīng)的描述。

Main方法中,我們調(diào)用GetEnumValues方法來(lái)獲取枚舉類型StartStateEnum中的所有字段值,并將返回的字段值集合存儲(chǔ)在enumValues變量中。

然后,我們遍歷字段值集合,并將每個(gè)字段值輸出到控制臺(tái)。

請(qǐng)注意,我們定義了一個(gè)名為GetEnumValues的輔助方法,用于獲取枚舉類型的字段值。該方法使用反射來(lái)獲取字段的值,并將其添加到集合中。我們還添加了一些驗(yàn)證,以確保傳遞的類型是有效的枚舉類型。

運(yùn)行以上代碼,輸出將是:

1 Start 2 NotStart 

這證明成功將枚舉類型StartStateEnum的字段值添加到集合中并返回。請(qǐng)根據(jù)實(shí)際情況修改示例代碼中的枚舉類型和字段處理邏輯。

實(shí)現(xiàn)

1.創(chuàng)建一個(gè)枚舉幫助類,并加上上面的邏輯代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace Yuebon.Commons.Helpers
{
    /// <summary>
    /// 枚舉幫助類
    /// </summary>
    public static class EnumHelper
    {
        /// <summary>
        /// 獲取枚舉中所有字段
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        /// <exception cref="ArgumentException"></exception>
        public static List<T> GetEnumValues<T>()
        {
            // 獲取枚舉類型
            Type enumType = typeof(T);
            // 驗(yàn)證是否為枚舉類型
            if (!enumType.IsEnum)
            {
                throw new ArgumentNullException("指定的類型不是枚舉。");
            }
            // 獲取枚舉中的所有字段
            FieldInfo[] fields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
            // 存儲(chǔ)字段值的集合
            List<T> enumValues = new List<T>();
            // 遍歷字段并添加字段值到集合
            foreach (var field in fields)
            {
                if (field.FieldType == enumType)
                {
                    T value = (T)field.GetValue(null);
                    enumValues.Add(value);
                }
            }
            return enumValues;
        }
    }
}

2.調(diào)用和結(jié)果:

// GetDescription 獲取枚舉描述的擴(kuò)展方法,感興趣的小伙伴可以去看我之前的文章~
result.ResData = EnumHelper.GetEnumValues<StartStateEnum>().Select(d => new KeyValue { Key = Convert.ToInt32(d).ToString(), Value = d.GetDescription() });

結(jié)尾

通過(guò)枚舉將表中狀態(tài)已獲取下拉數(shù)據(jù)源的形式響應(yīng)給前端,代碼可維護(hù)性和擴(kuò)展性的優(yōu)勢(shì)非常的明顯,也不必要去浪費(fèi)數(shù)據(jù)庫(kù)的資源,是一個(gè)非常不錯(cuò)的方法,當(dāng)然了,一些變化比較多業(yè)務(wù)邏輯代碼較少的一些字段還是建議在字典中維護(hù)起來(lái),如角色,類型等,

以上就是詳解C#如何將枚舉以下拉數(shù)據(jù)源的形式返回給前端的詳細(xì)內(nèi)容,更多關(guān)于C#數(shù)據(jù)源返回前端的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#從文件流讀取xml文件到DataSet并顯示的方法

    C#從文件流讀取xml文件到DataSet并顯示的方法

    這篇文章主要介紹了C#從文件流讀取xml文件到DataSet并顯示的方法,實(shí)例分析了C#操作XML文件的技巧與DataSet的使用方法,需要的朋友可以參考下
    2015-04-04
  • 在C#中處理時(shí)間戳和時(shí)區(qū)的解決方法

    在C#中處理時(shí)間戳和時(shí)區(qū)的解決方法

    處理時(shí)間戳和不同的時(shí)區(qū)可能是軟件開(kāi)發(fā)中的一個(gè)棘手問(wèn)題,尤其是當(dāng)系統(tǒng)不確定給定的日期時(shí)間是UTC還是本地時(shí)間時(shí),通常會(huì)遇到與時(shí)間轉(zhuǎn)換相關(guān)的問(wèn)題,在這篇文章中,我將分享我們?nèi)绾卧贑#中處理時(shí)間戳和時(shí)區(qū),需要的朋友可以參考下
    2024-06-06
  • C#創(chuàng)建Windows Service(Windows 服務(wù))的方法步驟

    C#創(chuàng)建Windows Service(Windows 服務(wù))的方法步驟

    本文介紹了如何用C#創(chuàng)建、安裝、啟動(dòng)、監(jiān)控、卸載簡(jiǎn)單的Windows Service 的內(nèi)容步驟和注意事項(xiàng),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • C#動(dòng)態(tài)創(chuàng)建button的方法

    C#動(dòng)態(tài)創(chuàng)建button的方法

    這篇文章主要介紹了C#動(dòng)態(tài)創(chuàng)建button的方法,涉及C#按鈕屬性動(dòng)態(tài)設(shè)置的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • 基于C#實(shí)現(xiàn)ModbusTCP服務(wù)器接口的方法

    基于C#實(shí)現(xiàn)ModbusTCP服務(wù)器接口的方法

    ModbusTCP服務(wù)器的本質(zhì)就是TCP服務(wù)器,根據(jù)識(shí)別ModbusTCP請(qǐng)求報(bào)文,返回對(duì)應(yīng)的ModbusTCP報(bào)文,今天給大家分享一下,如何基于C#來(lái)ModbusTCP服務(wù)器接口,需要的朋友可以參考下
    2025-01-01
  • 淺談C# AOP的簡(jiǎn)單實(shí)現(xiàn)

    淺談C# AOP的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了淺談C# AOP的簡(jiǎn)單實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • C#中Trim()、TrimStart()、TrimEnd()的用法介紹

    C#中Trim()、TrimStart()、TrimEnd()的用法介紹

    這篇文章主要介紹了C#中Trim()、TrimStart()、TrimEnd()的用法,有需要的朋友可以參考一下
    2014-01-01
  • C#設(shè)置Word文本框中改變文字方向的方法

    C#設(shè)置Word文本框中改變文字方向的方法

    在Word中可插入文本框,默認(rèn)情況下插入的文本框中的文字方向?yàn)闄M向排列,對(duì)于一些特殊文檔的設(shè)計(jì)要求,需要改變文字方向,本文就詳細(xì)的介紹一下使用,感興趣的可以了解一下
    2021-06-06
  • C#中常量和只讀變量的區(qū)別小結(jié)

    C#中常量和只讀變量的區(qū)別小結(jié)

    本篇文章主要是對(duì)C#中常量和只讀變量的區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • C#中使用NLog庫(kù)進(jìn)行日志記錄的流程詳解

    C#中使用NLog庫(kù)進(jìn)行日志記錄的流程詳解

    NLog 是 .NET 的日志記錄框架,具有豐富的日志路由和管理能力,極大地幫助您生成和管理日志,NLog 是一個(gè)庫(kù),可以輕松地同時(shí)記錄和管理多個(gè)不同區(qū)域中的數(shù)據(jù),本文將給大家介紹在C#中使用 NLog 庫(kù)進(jìn)行日志記錄的教程,需要的朋友可以參考下
    2024-06-06

最新評(píng)論