.Netc#列挙値セットとその属性の取得

1493 ワード

直接コードを付けて、以下の列挙を加えます
    public enum EMyType
    {
        [System.ComponentModel.Description("A  ")]
        TypeA = 1,
        [System.ComponentModel.Description("B  ")]
        TypeB = 1,
        [System.ComponentModel.Description("C  ")]
        TypeC = 2,
    }  
次にその列挙名を遍歴する方法は、
            foreach (var name in Enum.GetNames(typeof(EMyType)))
            {
                Console.WriteLine(name);
            }
次に、その列挙名と列挙値を遍歴する方法は、
            foreach (var value in Enum.GetValues(typeof(EMyType)))
            {
                Console.WriteLine(string.Format("{0}={1}", value.ToString(), Convert.ToInt32(value)));
            }
は次にその列挙名を遍歴し、列挙値と属性を記述する文字列の方法は
            foreach (var value in Enum.GetValues(typeof(EMyType)))
            {
                object[] objAttrs = value.GetType().GetField(value.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
                if (objAttrs != null && 
                    objAttrs.Length > 0)
                {
                    DescriptionAttribute descAttr = objAttrs[0] as DescriptionAttribute;
                    Console.WriteLine(string.Format("[{0}]", descAttr.Description));
                }
                Console.WriteLine(string.Format("{0}={1}", value.ToString(), Convert.ToInt32(value)));
            }