C#循环枚举获取注解和值

private DataTable GetSpotChkType()
{
    DataTable tb = new DataTable();
    tb.Columns.Add("name", typeof(string));
    tb.Columns.Add("value", typeof(int));
    DataRow r = tb.NewRow();
    r["name"] = "全部";
    r["value"] = -1;
    tb.Rows.Add(r);
    var arr = Enum.GetValues(typeof(SpotChkType));
    for (int i = 0; i < arr.Length; i++)
    {
        DataRow dr = tb.NewRow();
        var temp = (SpotChkType)arr.GetValue(i);
        FieldInfo fieldInfo = temp.GetType().GetField(temp.ToString());
        object[] attribArray = fieldInfo.GetCustomAttributes(false);
        EnumFieldAttribute attrib = (EnumFieldAttribute)attribArray[0];
        dr["name"] = attrib.Name;
        dr["value"] = (int)temp;
        tb.Rows.Add(dr);
    }
    return tb;
}
public enum SpotChkType
{
    /// <summary>
    /// 滞留报警
    /// </summary>
    [EnumField(Name = "同一位置滞留过久")]
    StayMessage = 11,
    /// <summary>
    /// 超出网格
    /// </summary>
    [EnumField(Name = "越界")]
    OverGridMessage = 17,
    /// <summary>
    /// 脱岗(漏岗)
    /// </summary>
    [EnumField(Name = "脱岗(漏岗)")]
    LeavePostMessage = 18,
    /// <summary>
    /// GPS异常
    /// </summary>
    [EnumField(Name = "GPS异常")]
    GpsMessage = 19,
    /// <summary>
    /// 关键点未签到
    /// </summary>
    [EnumField(Name = "关键点未签到")]
    GjdwqdMessage = 20,
    /// <summary>
    /// 迟到报警
    /// </summary>
    [EnumField(Name = "迟到报警")]
    CdMessage = 21,
    /// <summary>
    /// 早退警报
    /// </summary>
    [EnumField(Name = "早退警报")]
    ZtMessage = 22,
    /// <summary>
    /// 核实超时警报
    /// </summary>
    [EnumField(Name = "核实超时警报")]
    HsCsMessage = 23,
    /// <summary>
    /// 核查超时警报
    /// </summary>
    [EnumField(Name = "核查超时警报")]
    HcCsMessage = 24
}

猜你喜欢

转载自blog.csdn.net/qq_32109957/article/details/95358795