枚举的使用方法

枚举类型在程序开发中是一个非常好用的数据类型,一般用来描述一个审核节点,类型,条件分支是极好的。

我总结枚举类型的使用一般有以下优点:

1. 结构表达清晰

2. 编写条件分支判断不易出错

3. 存储数据空间占用小

1. 定义枚举

byte类型的赋值范围是0~255,对于枚举类型够用了,如果您需要取负值,可以继承int

2. 枚举的使用

 

3. 获取枚举的Description

public static string GetEnumDescription(this Enum en)
{
     if (en == null) { return string.Empty; }
       Type type = en.GetType();
       MemberInfo[] memInfo = type.GetMember(en.ToString());
        if (memInfo != null && memInfo.Length > 0)
        {
            object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
            if (attrs != null && attrs.Length > 0)
               return ((DescriptionAttribute)attrs[0]).Description;
        }
        return en.ToString();
}

4. 获取枚举类型详细

/// <summary>
/// 获取枚举详细
/// </summary>
/// <returns></returns>
public static List<EnumDto> GetEnumDescriptions<T>()
{
    List<EnumDto> enumDescriptons = new List<EnumDto>();
    if (!typeof(T).IsEnum) throw new Exception("T不是一个枚举类型");
    foreach (var value in Enum.GetValues(typeof(T)))
    {
          object[] objAttrs = value.GetType().GetField(value.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
          string description = "";
          if (objAttrs != null && objAttrs.Length > 0)
          {
               DescriptionAttribute descAttr = objAttrs[0] as DescriptionAttribute;
               description = descAttr.Description;
          }
          enumDescriptons.Add(new EnumDto()
          {
               Name = value.ToString(),
               Value = Convert.ToInt32(value),
               Description = description
          });

     }
     return enumDescriptons;
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;

namespace WoT.Infrastructure.Helper
{
    /// <summary>
    /// 枚举类型的详细
    /// Author:Jacky
    /// </summary>
    [DataContract]
    public class EnumDto
    {
        /// <summary>
        /// 枚举名
        /// </summary>
        [DataMember]
        public string Name { get; set; }

        /// <summary>
        /// 枚举值
        /// </summary>
        [DataMember]
        public int Value { get; set; }

        /// <summary>
        /// 枚举说明
        /// </summary>
        [DataMember]
        public string Description { get; set; }

    }
}
EnumDto类

PS:扫描下方二维码或点击链接,加入QQ群

一群用代码改变世界的

原文地址:https://www.cnblogs.com/ydcnblog/p/9258378.html