zoukankan      html  css  js  c++  java
  • C#枚举

    C#获取枚举描述

    首先创建如下枚举信息,并使用DescriptionAttribute类增加描述特性。

    /// <summary>
    /// 状态编码枚举
    /// </summary>
    public enum StatusCode
    {
        /// <summary>
        /// 操作成功
        /// </summary>
        [Description("操作成功")]
        Success = 200,
     
        /// <summary>
        /// 参数缺失
        /// </summary>
        [Description("参数缺失")]
        MissingParam = 201,
     
        /// <summary>
        /// 操作失败
        /// </summary>
        [Description("操作失败")]
        Failure = 202
    }
    
    方法一:编写获取枚举描述方法
    /// <summary>  
    /// 获取枚举描述
    /// </summary>  
    /// <param name="en">枚举</param>  
    /// <returns>返回枚举的描述 </returns>  
    public static string GetDescription(Enum en)
    {
        Type type = en.GetType();   //获取类型  
        MemberInfo[] memberInfos = type.GetMember(en.ToString());   //获取成员  
        if (memberInfos != null && memberInfos.Length > 0)
        {
            DescriptionAttribute[] attrs = memberInfos[0].GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];   //获取描述特性  
            if (attrs != null && attrs.Length > 0)
            {
                return attrs[0].Description;    //返回当前描述
            }
        }
        return en.ToString();
    }
    

    调用方式:

    string description = GetDescription(StatusCode.Success);
    
    方法二:通过枚举扩展类
    
    using System;
    using System.ComponentModel;
    using System.Reflection;
     
    /// <summary>
    /// 枚举扩展类
    /// </summary>
    public static class EnumExtension
    {
        /// <summary>
        /// 获取枚举的描述信息
        /// </summary>
        public static string GetDescription(this Enum em)
        {
            Type type = em.GetType();
            FieldInfo fd = type.GetField(em.ToString());
            if (fd == null)
                return string.Empty;
            object[] attrs = fd.GetCustomAttributes(typeof(DescriptionAttribute), false);
            string name = string.Empty;
            foreach (DescriptionAttribute attr in attrs)
            {
                name = attr.Description;
            }
            return name;
        }
    }
    

    调用方式:

    string description = StatusCode.Success.GetDescription();
    
  • 相关阅读:
    Linux入门之系统启动
    2017.12.25 Android数据存储方案
    2017.12.18 Android开发之进程讲解
    2017.12.18 Android开发之消息队列(实现子线程修改UI组件)
    2017.12.4 Android开发之ListView组件
    2017.12.10 把KIE的jbpm_console嵌入到我们的web项目中
    2017.12.07 React组件嵌套以及for循环渲染子组件
    2017.12.07 React路由到不同组件界面
    2017.12.07 Ajax获取服务器数据并发送到前端
    B-树&B+树以及其在数据库中的应用
  • 原文地址:https://www.cnblogs.com/newcapecjmc/p/12737901.html
Copyright © 2011-2022 走看看