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

詳解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#數據源返回前端的資料請關注腳本之家其它相關文章!

相關文章

  • 時間字符串轉換成日期對象datetime的方法

    時間字符串轉換成日期對象datetime的方法

    在遇到形如"2012-12-19T17:00:00Z"這樣的時間字符串時,怎樣轉換到DateTime類型呢,下面的方法可以解決
    2013-12-12
  • c#中的virtual方法及應用場景分析

    c#中的virtual方法及應用場景分析

    在 C# 中,virtual?關鍵字用于修飾方法、屬性、索引器或事件,這篇文章主要介紹了c#中的virtual方法及應用場景分析,需要的朋友可以參考下
    2025-03-03
  • 使用策略模式實現報警服務示例詳解(短信報警)

    使用策略模式實現報警服務示例詳解(短信報警)

    服務的功能:這個服務就是能夠實現多通路報警的服務,比如郵件報警、客戶端報警、短信報警等,該服務靈活性還不錯,比較方便擴展
    2014-01-01
  • Unity3D更改默認的腳本編輯器

    Unity3D更改默認的腳本編輯器

    這篇文章簡要的說明了如何去修改Unity默認的腳本編輯器,大大提升了靈活性和便捷性,文本有詳細的圖文介紹,能讓你觀看的更加清晰,希望對你有所幫助
    2021-06-06
  • C#6.0新語法示例詳解

    C#6.0新語法示例詳解

    這篇文章主要給大家介紹了關于C#6.0新語法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • C#合并與拆分PDF文檔的三種方法

    C#合并與拆分PDF文檔的三種方法

    PDF文檔的合并與拆分是日常開發(fā)中的常見需求——無論是整合多份報告生成最終文檔,還是將大文件按需拆分為獨立章節(jié),都考驗著開發(fā)者的處理能力,本文將詳細介紹三種高效實用的PDF合并/拆分方法,并附上可直接運行的Spire.PDF實戰(zhàn)示例,需要的朋友可以參考下
    2025-08-08
  • 那些年,我還在學習C# 學習筆記續(xù)

    那些年,我還在學習C# 學習筆記續(xù)

    那些年學習C#,就是對C#相關的一些知識有一個了解,等到要用時才不會找不到方向,比如說擴展方法,開始時怎么覺得沒有用,后來了解到asp.net MVC,它可以用來擴展Html類,比如做一個分頁的方法;所以對一門語言了解寬一些是沒有壞處的
    2012-03-03
  • C#3.0中Lambda表達式詳解

    C#3.0中Lambda表達式詳解

    在C#3.0中,微軟給我?guī)淼囊恍┬绿匦钥赡苁且郧八虚_發(fā)語言都沒有的特性。這無疑大大的體現了C#3.0在開發(fā)語言中強大的優(yōu)勢
    2013-09-09
  • 使用C#代碼壓平PDF表單字段的實現方法

    使用C#代碼壓平PDF表單字段的實現方法

    壓平表單字段是防止他人修改或刪除 PDF 表單內容的一種有效方式,壓平后,表單字段將失去編輯和填寫功能,其內容會以普通文本的形式顯示在文檔中,本文將介紹如何在 C# 和 VB.NET 中實現 PDF 表單字段壓平,需要的朋友可以參考下
    2026-05-05
  • C#多線程學習之(一)多線程的相關概念分析

    C#多線程學習之(一)多線程的相關概念分析

    這篇文章主要介紹了C#多線程學習之多線程的相關概念,涉及C#中多線程的相關概念與使用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04

最新評論

东台市| 南昌市| 开鲁县| 平安县| 新绛县| 化隆| 山阳县| 绥芬河市| 甘德县| 景东| 富川| 井研县| 同仁县| 集贤县| 密云县| 康马县| 寿阳县| 巧家县| 吉林省| 梅州市| 襄汾县| 彭泽县| 丰顺县| 安新县| 花垣县| 泸定县| 裕民县| 汉沽区| 丰原市| 明光市| 兴宁市| 洛宁县| 南宁市| 凤山县| 紫金县| 隆回县| 建宁县| 东山县| 吉木萨尔县| 新乡市| 临泉县|