c# 枚举获取描述(enum)

1)枚举获取描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace QRC.Common.Enum
{
    public static class BaseEnum
    {
        /// <summary>
        /// 取得枚举描述
        /// </summary>
        /// <param name="para"></param>
        /// <returns></returns>
        public static string GetEnumDesc(this System.Enum para)
        {
            string strValue = para.ToString();
            FieldInfo fieldInfo = para.GetType().GetField(strValue);
            Object[] objs = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
            if (objs.Length == 0)
            {
                return strValue;
            }
            else
            {
                var da = (DescriptionAttribute)objs[0];
                return da.Description;
            }
        }


        /// <summary>
        /// 取得枚举值数
        /// </summary>
        /// <param name="EnumObject">枚举对象</param>
        /// <returns>枚举值数</returns>
        public static int GetEnumValue(this System.Enum EnumObject)
        {
            int intValue = (int)System.Enum.Parse(EnumObject.GetType(), EnumObject.ToString(), true);
            return intValue;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="enumType"></param>
        /// <param name="key"></param>
        /// <param name="val"></param>
        /// <returns></returns>
        public static DataTable EnumToDataTable(Type enumType)
        {
            int[] values = (int[])System.Enum.GetValues(enumType);
            string[] names = System.Enum.GetNames(enumType);

            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[] { new DataColumn("Value", typeof(int)), new DataColumn("Description", typeof(string)) });
            for (int i = 0; i < values.Length; i++)
            {
                string description = "";

                var enumObject = System.Enum.Parse(enumType, values[i].ToString());
                description = (enumObject as System.Enum).GetEnumDesc();
                dt.Rows.Add(values[i], description);
            }

            return dt;
        }

        public static Dictionary<int, string> EnumToDictionary(Type enumType)
        {
            int[] values = (int[])System.Enum.GetValues(enumType);
            string[] names = System.Enum.GetNames(enumType);

            Dictionary<int, string> dic = new Dictionary<int, string>();
            for (int i = 0; i < values.Length; i++)
            {
                string description = "";

                var enumObject = System.Enum.Parse(enumType, values[i].ToString());
                description = (enumObject as System.Enum).GetEnumDesc();
                dic.Add(values[i], description);
            }

            return dic;
        }
    }
}

调用

BaseEnum.GetEnumDesc(QRCEnum.RegisterApplyResultStatus.Complete)

BaseEnum.GetEnumValue(QRCEnum.LabelingResultStatus.Complete)

2)根据值得到中文备注

        public enum ProblemStatus
        {
            [Description("草稿")]
            草稿 = 0,
            [Description("审核中")]
            审核中 = 1,
            [Description("待整改")]
            待整改 = 2,
            [Description("整改确认")]
            整改确认 = 3,
            [Description("已整改")]
            已整改 = 4
        }
/// <summary>
/// 根据值得到中文备注
/// </summary>
/// <param name="e"></param>
/// <param name="value"></param>
/// <returns></returns>
public static string GetEnumDesc(this Type e, int? value)
{
    FieldInfo[] fields = e.GetFields();
    for (int i = 1, count = fields.Length; i < count; i++)
    {
        if ((int)System.Enum.Parse(e, fields[i].Name) == value)
        {
            DescriptionAttribute[] EnumAttributes = 
                        (DescriptionAttribute[])fields[i].GetCustomAttributes(typeof(DescriptionAttribute), false);
            if (EnumAttributes.Length > 0)
            {
                return EnumAttributes[0].Description;
            }
        }
    }
    return "";
}

调用

EnumHelper.GetEnumDesc(typeof(Platform.Common.BaseEnum.ProblemStatus), 1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值