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