枚举初使用

1,定义一个枚举:

复制代码
    public enum MatRequireStatus
    {
        /// <summary>
        /// 待处理
        /// </summary>
        [Description("待处理")]
        Pending = 0,
        /// <summary>
        /// 已派单
        /// </summary>
        [Description("已派单")]
        HasBeenSent = 1,
        /// <summary>
        /// 已处理
        /// </summary>        
        [Description("已处理")]
        Processed = 2
    }
复制代码

2,使用枚举赋值。

TransOrder transOrder = new TransOrder()
            {                
                Status = Convert.ToDouble( MatRequireStatus.Pending)
            };

3,获取枚举的名称:

            foreach (var item in list)
            {
                item.StatusDesc = Enum.GetName(typeof(MatRequireStatus), Convert.ToInt32(item.Status));
            }

4,获取枚举的描述:

4.1新增方法:

复制代码
        /// <summary>
        /// 获取枚举值的描述文本
        /// </summary>
        /// <param name="e">枚举值</param>
        /// <returns></returns>
        public string Description(Enum e)
        {
            Type enumType = e.GetType();
            var fieldInfo = enumType.GetFields().FirstOrDefault(a => a.Name == Enum.GetName(enumType, e));
            object[] obj = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
            if (obj == null) return null;

            DescriptionAttribute des = (DescriptionAttribute)obj[0];
            return des.Description;
        }
复制代码

4.2调用方法获取枚举描述:  

复制代码
MatRequireStatus mat = MatRequireStatus.Processed;
var desc= Description(mat);
或者

foreach (var item in list)
{
item.StatusDesc = Description((MatRequireStatus)Convert.ToInt32(item.Status));
}

复制代码

 5,将枚举转换为列表

  代码有点长,有需要的话,我再发。

posted @   黑 瞳  阅读(225)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示