C#循环枚举得到枚举的注释和值

首先定义一个枚举    /// <summary>
    /// 枚举注释的自定义属性类
    /// </summary>
    public class EnumDescriptionAttribute : Attribute
    {
        private string m_strDescription;
        public EnumDescriptionAttribute(string strPrinterName)
        {
            m_strDescription = strPrinterName;
        }

        public string Description
        {
            get { return m_strDescription; }
        }
    }

/// <summary>
    /// 测试类型
    /// </summary>
    public enum TestType
    {
        /// <summary>
        /// 分静态精度测量
        /// </summary>
        [EnumDescription("分静态精度测量")]
        StaticPrecisionOpen,
        /// <summary>
        /// 合静态精度测量
        /// </summary>
        [EnumDescription("合静态精度测量")]
        StaticPrecisionClose,
        /// <summary>
        /// 副分静态精度测量
        /// </summary>
        [EnumDescription("副分静态精度测量")]
        StaticPrecisionOPenSec,
        /// <summary>
        /// 频谱分析
        /// </summary>
        [EnumDescription("频谱分析")]
        Dynamic,
        /// <summary>
        /// 分电流峰值
        /// </summary>
        [EnumDescription("分电流峰值")]
        CurMaxOpen,
        /// <summary>
        /// 合电流峰值
        /// </summary>
        [EnumDescription("合电流峰值")]
        CurMaxClose
}

接下来通过循环得到枚举的值和注释

 Dictionary<string, int> enumDic = new Dictionary<string, int>();

        public void ForEnum()
        {
            Type t = typeof(TestType);
            Array arrays = Enum.GetValues(t);
            for (int i = 0; i < arrays.LongLength; i++)
            {
                TestType test = (TestType)arrays.GetValue(i);
                FieldInfo fieldInfo = test.GetType().GetField(test.ToString());
                object[] attribArray = fieldInfo.GetCustomAttributes(false);
                EnumDescriptionAttribute attrib = (EnumDescriptionAttribute)attribArray[0];
                enumDic.Add(attrib.Description, (int)test);
            }
        }

时间: 2024-10-01 07:42:24

C#循环枚举得到枚举的注释和值的相关文章

枚举 与 枚举的应用

枚举 1 # include <stdio.h> //只定义了一个数据类型,并没有定义变量, 该数据类型的名字是 enum WeekDay , 默认 值是用0开始 // MonDay = 0 , TuesDay = 1 .... , SunDay = 6 enum WeekDay { MonDay, TuesDay, WednesDay, ThursDay, FriDay, SaturDay, SunDay }; int main(void) { //int day; //day定义成int类

枚举|标志枚举+|(或)和&amp;(与)运算|类型转换|值类型和引用类型|传参|异常|垃圾回收

枚举部分 enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型. 通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它. 但是,还可以将枚举嵌套在类或结构中.默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1. 例1: //此枚举的默认值是从0开始 enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; 例2: //此枚举的默认值是从1开始,下标为3的tue值为7,从下标3开始

深度分析Java的枚举类型—-枚举的线程安全性及序列化问题

原文:深度分析Java的枚举类型--枚举的线程安全性及序列化问题 枚举是如何保证线程安全的 要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字,他并不是一个类,那么枚举是由什么类维护的呢,我们简单的写一个枚举: public enum t { SPRING,SUMMER,AUTUMN,WINTER; } 然后我们使用反编译,看看这段代码到底是怎么实现的,反编译(Java的反编译)后代码内容如下: public fin

第三节 java 数组(循环遍历、获取数组的最值(最大值和最小值)、选择排序、冒泡排序、练习控制台输出大写的A)

获取数组的最值(最大值和最小值) 思路: 1.获取最值需要进行比较,每一次比较都会有一个较大的值,因为该 值不确定,需要一个变量进行临储. 2.让数组中的每一个元素都和这个变量中的值进行比较,如果大于了 变量中的值,就用该变量记录较大值. 3.当所有的元素都比较完成,那么该变量中存储的就是数组中最大值 例子://最大值 int arr[] = {1,2,3,4,5,}; int max = arr[0]; for(int a=0;a<arr.length;a++){ {if(arr[a])>a

C# Foreach循环本质与枚举器

对于C#里面的Foreach学过 语言的人都知道怎么用,但是其原理相信很多人和我一样都没有去深究.刚回顾泛型讲到枚举器让我联想到了Foreach的实现,所以进行一番探究,有什么不对或者错误的地方大家多多斧正. 1.创建一个控制台应用程序 2.编写测试代码并分析 在Program类中写一个foreach循环 class Program { static void Main(string[] args) { List peopleList = new List() { "张三", &quo

idea创建类,接口,枚举等如何设置注释

进入设置: File -> Settings   依次选择: Editor -> File and Code Templates -> Files -> Class (根据需要选择Interface 和 Enum) 注释模板: /*** @program: ${PROJECT_NAME}* @description: ${description}* @author: 你的ID* @create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}**

Java中自定义枚举(Enum)项的值,可设置为指定的值

一.代码 package base.lang; /** * ClassName: StateEnum  * @Description: TODO * @author fuming * @date 2016年11月27日 */ public enum StateEnum{//添加枚举的指定常量online(10),offline(20); //必须增加一个构造函数,变量,得到该变量的值private int  mState=0;private StateEnum(int value){mState

什么是枚举及枚举的使用场合

这里主要讲解的是Java的枚举类型 什么是枚举? 以我的理解答:枚举是我们自己定义的一个集合,比如说我们数学里面所学的集合A={1.2.3},当我们要使用A这个集合的时候,我们只能够使用集合A里面的1.2.3这三个元素,不是A里面的元素我们就不可以使用. 同样,枚举和这个集合是类似的,当我们定义了一个枚举类型的时候,我们声明它里面有几个元素,在我们使用这个枚举的时候,我们只能够使用它有的元素,没有的元素我们是无法使用,系统就会报错! 枚举还有一个特点,就是可以代表数值,比如说第一个定义的元素对应

swift枚举_003_swift枚举类型

//: Playground - noun: a place where people can play import UIKit //------枚举---------// //1.Swift中的枚举 //描述一个人的性别(0:男,1:女,2:不详) //enum Sex { //枚举类型 // case Male //枚举值 // case Female // case Unknown // //} // ////定义枚举变量 //var mySex : Sex = Sex.Female /