反射:获取枚举类型的Name,Value,Description

[Obsolete("请使用新的方法XXX")] //使用Obsolete特性来告诉使用者这是一个过期的方法
        private static void Test()
        {
            Type t = typeof(ApprovalStatus);
            var fields = t.GetFields();
            foreach (var item in fields)
            {
                if (!item.IsSpecialName)
                {
                    var attr = item.GetCustomAttribute(typeof(DescriptionAttribute), false);
                    string attribute = "";
                    if (attr != null)
                        attribute = ((DescriptionAttribute)attr).Description;
                    Console.WriteLine($"Description:{attribute}\tName:{item.Name}\tValue:{item.GetRawConstantValue()}");
                }
            }

            Console.ReadKey();
        }
  

  

枚举类:

    /// <summary>
    /// 表示审批状态的枚举类
    /// </summary>
    enum ApprovalStatus
    {
        /// <summary>
        /// ?
        /// </summary>
        [Description("")]
        NoUse = 0,

        /// <summary>
        /// 未提交
        /// </summary>
        [Description("未提交")]
        NoSubmit = 1,

        /// <summary>
        /// 审核中
        /// </summary>
        [Description("审核中")]
        OnApprovaling = 2,

        /// <summary>
        /// 待生效
        /// </summary>
        [Description("待生效")]
        OnEffecting = 3,

        /// <summary>
        /// 已生效
        /// </summary>
        [Description("已生效")]
        Effected = 4,

        /// <summary>
        /// 拒绝
        /// </summary>
        [Description("拒绝")]
        Reject = 5,

        /// <summary>
        /// 撤销
        /// </summary>
        [Description("撤销")]
        Undo = 6
    } 

 效果:

时间: 2024-08-02 23:01:04

反射:获取枚举类型的Name,Value,Description的相关文章

获取枚举类型Description特性的描述信息

C#中可以对枚举类型用Description特性描述. 如果需要对Description信息获取,那么可以定义一个扩展方法来实现.代码如下: public static class EnumExtensions { public static string GetDescription(this object value) { if (value==null) return string.Empty; Type type = value.GetType(); var fieldInfo = ty

获取枚举类型的描述description

using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace candel { class Program { static void Main(string[] args) { int x = (in

反射获取指定类型

package dao; import java.io.Serializable; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.hibernate.Query;

获取枚举类型描述

代码修改前: switch (months) { case "1": nums = "1"; break; case "2": nums = "2"; break; case "3": nums = "3"; break; case "4": nums = "4"; break; case "5": nums = "5

[C#]枚举操作(从枚举中获取Description,根据Description获取枚举,将枚举转换为ArrayList)工具类

关键代码: using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Reflection; namespace CSharpUtilHelpV2 { /// <summary> /// 基于.NET 2.0的枚举工具类 /// </summary> public static class EnumToolV2

巧用枚举类型,实现项目的多语言切换

在项目程序中实现多语言,有多种方式,而枚举类型的多语言处理,是比较头疼的问题.比如有下面这个枚举类型: public enum MySex { Women = 0, Man = 1 } 如果想在界面上输出这个枚举项,直接的做法如下处理: Console.WriteLine("Sex:{0},{1}",MySex.Women,MySex.Man); 程序输出: Sex:Women,Man 如果我们想输出枚举项的中文名称,怎么办呢? 通常的做法是这样: public enum MySex

自定义枚举类型的注释属性用于UI的显示

1.定义枚举类型 public enum CommStatus    {        /// <summary>        /// Udp类型        /// </summary>        [Description("Udp类型")] Udp = 0, /// <summary>        /// Udp类型        /// </summary>        [Description("Udp广播类

从一个int值显示相应枚举类型的名称或者描述

我正在做一个出入库管理的简单项目,在Models里定义了这样的枚举类型 public enum InOrOut { [Description("出库")] Out = 0, [Description("入库")] In = 1 } 我想在输入参数为数据库字段值1或者0的时候,在页面上显示为枚举Name:In.Out,或者干脆显示为Description:出库.入库. 获取枚举Name其实很简单: return Enum.GetName(typeof(InOrOut)

第15章 枚举类型和位标志

Enumeration提供了一些非常炫酷的功能,相信大多数开发人员都不熟悉.这些新功能极大的简化了应用程序开发. 15.1枚举类型 枚举类型(enumerated types)定义了一组“符号名称/值”配对. 以下Color类型定义了一组符号,每个符号都标识一种颜色: internal enum Color { White,//赋值0 Red,  //赋值1 Greed,//赋值2 Blue, //赋值3 Orange//赋值4 } 当然,也可以写个程序用0代表白色,1代表红色,以此类推.但不应