亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

相信各位有碰到過與我類似的問題,當表中存一些狀態(tài)的字段,無非以下幾種形式1.直接寫死 如: 正常:1,異常:2 ,還有一種則是寫在字典中,再或者就是加在枚舉上,前兩者對于返回下拉數據源來說比較好處理,直接寫死和查數據庫,但都有各自的缺點,寫死維護比較麻煩,查數據庫也沒必要,這個時候枚舉就可以解決這個問題.

實現邏輯

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

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
public class Program
{
    public enum StartStateEnum
    {
        [Description("啟動")]
        Start = 0,
        [Description("未啟動")]
        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);
        // 驗證是否為枚舉類型
        if (!enumType.IsEnum)
        {
            throw new ArgumentException("The specified type is not an enum.");
        }
        // 獲取枚舉中的所有字段
        FieldInfo[] fields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
        // 存儲字段值的集合
        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;
    }
}

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

Main方法中,我們調用GetEnumValues方法來獲取枚舉類型StartStateEnum中的所有字段值,并將返回的字段值集合存儲在enumValues變量中。

然后,我們遍歷字段值集合,并將每個字段值輸出到控制臺。

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

運行以上代碼,輸出將是:

1 Start 2 NotStart 

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

實現

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

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);
            // 驗證是否為枚舉類型
            if (!enumType.IsEnum)
            {
                throw new ArgumentNullException("指定的類型不是枚舉。");
            }
            // 獲取枚舉中的所有字段
            FieldInfo[] fields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
            // 存儲字段值的集合
            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.調用和結果:

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

結尾

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

以上就是詳解C#如何將枚舉以下拉數據源的形式返回給前端的詳細內容,更多關于C#數據源返回前端的資料請關注腳本之家其它相關文章!

相關文章

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

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

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

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

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

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

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

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

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

    基于C#實現ModbusTCP服務器接口的方法

    ModbusTCP服務器的本質就是TCP服務器,根據識別ModbusTCP請求報文,返回對應的ModbusTCP報文,今天給大家分享一下,如何基于C#來ModbusTCP服務器接口,需要的朋友可以參考下
    2025-01-01
  • 淺談C# AOP的簡單實現

    淺談C# AOP的簡單實現

    這篇文章主要介紹了淺談C# AOP的簡單實現,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • C#中Trim()、TrimStart()、TrimEnd()的用法介紹

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

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

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

    在Word中可插入文本框,默認情況下插入的文本框中的文字方向為橫向排列,對于一些特殊文檔的設計要求,需要改變文字方向,本文就詳細的介紹一下使用,感興趣的可以了解一下
    2021-06-06
  • C#中常量和只讀變量的區(qū)別小結

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

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

    C#中使用NLog庫進行日志記錄的流程詳解

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

最新評論