.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)));
}