C#ループ列挙列挙列挙によるコメントと値

6412 ワード

 

/// <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);

            }

        }