方法类:

    public static class EnumExtensions
{
#region Enum /// <summary>
/// 获取枚举变量值的 Description 属性
/// </summary>
/// <param name="obj">枚举变量</param>
/// <returns>如果包含 Description 属性,则返回 Description 属性的值,否则返回枚举变量值的名称</returns>
public static string GetDescription(this System.Enum obj)
{
return GetDescription(obj, false);
} /// <summary>
/// 获取枚举变量值的 Description 属性
/// </summary>
/// <param name="obj">枚举变量</param>
/// <param name="isTop">是否改变为返回该类、枚举类型的头 Description 属性,而不是当前的属性或枚举变量值的 Description 属性</param>
/// <returns>如果包含 Description 属性,则返回 Description 属性的值,否则返回枚举变量值的名称</returns>
public static string GetDescription(this System.Enum obj, bool isTop)
{
if (obj == null)
{
return string.Empty;
}
try
{
Type enumType = obj.GetType();
DescriptionAttribute dna = null;
if (isTop)
{
dna = (DescriptionAttribute)Attribute.GetCustomAttribute(enumType, typeof(DescriptionAttribute));
}
else
{
FieldInfo fi = enumType.GetField(System.Enum.GetName(enumType, obj));
dna = (DescriptionAttribute)Attribute.GetCustomAttribute(
fi, typeof(DescriptionAttribute));
}
if ((dna != null)
&& (string.IsNullOrEmpty(dna.Description) == false))
{
return dna.Description;
}
}
catch
{
}
return obj.ToString();
} /// <summary>
/// 获取枚举变量值的 Description 属性
/// </summary>
/// <param name="obj">枚举变量</param>
/// <returns>如果包含 Description 属性,则返回 Description 属性的值,否则返回枚举变量值的名称</returns>
public static string GetDescription<TEnum>(this TEnum obj)
{
return GetDescription(obj, false);
} /// <summary>
/// 获取枚举变量值的 Description 属性
/// </summary>
/// <param name="obj">枚举变量</param>
/// <param name="isTop">是否改变为返回该类、枚举类型的头 Description 属性,而不是当前的属性或枚举变量值的 Description 属性</param>
/// <returns>如果包含 Description 属性,则返回 Description 属性的值,否则返回枚举变量值的名称</returns>
public static string GetDescription<TEnum>(this TEnum obj, bool isTop)
{
if (obj == null)
{
return string.Empty;
}
try
{
Type enumType = obj.GetType();
DescriptionAttribute dna = null;
if (isTop)
{
dna = (DescriptionAttribute)Attribute.GetCustomAttribute(enumType, typeof(DescriptionAttribute));
}
else
{
FieldInfo fi = enumType.GetField(System.Enum.GetName(enumType, obj));
dna = (DescriptionAttribute)Attribute.GetCustomAttribute(
fi, typeof(DescriptionAttribute));
}
if ((dna != null)
&& (string.IsNullOrEmpty(dna.Description) == false))
{
return dna.Description;
}
}
catch
{
}
return obj.ToString();
} /// <summary>
/// 获取字段Description
/// </summary>
/// <param name="fieldInfo">FieldInfo</param>
/// <returns>DescriptionAttribute[] </returns>
public static DescriptionAttribute[] GetDescriptAttr(this FieldInfo fieldInfo)
{
if (fieldInfo != null)
{
return (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
}
return null;
} /// <summary>
/// 根据Description获取枚举
/// 说明:
/// 单元测试-->通过
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="description">枚举描述</param>
/// <returns>枚举</returns>
public static T GetEnumName<T>(string description)
{
Type _type = typeof(T);
foreach (FieldInfo field in _type.GetFields())
{
DescriptionAttribute[] _curDesc = field.GetDescriptAttr();
if (_curDesc != null && _curDesc.Length > )
{
if (_curDesc[].Description == description)
return (T)field.GetValue(null);
}
else
{
if (field.Name == description)
return (T)field.GetValue(null);
}
}
throw new ArgumentException(string.Format("{0} 未能找到对应的枚举.错误枚举{1}", description, _type.Name), "Description");
} /// <summary>
/// 将枚举转换为ArrayList
/// 说明:
/// 若不是枚举类型,则返回NULL
/// 单元测试-->通过
/// </summary>
/// <param name="type">枚举类型</param>
/// <returns>ArrayList</returns>
public static ArrayList ToArrayList(this Type type)
{
if (type.IsEnum)
{
ArrayList _array = new ArrayList();
Array _enumValues = System.Enum.GetValues(type);
foreach (System.Enum value in _enumValues)
{
_array.Add(new KeyValuePair<System.Enum, string>(value, GetDescription(value)));
}
return _array;
}
return null;
} #endregion Enum
}

枚举类:

        #region 职员流程类型

        /// <summary>
/// 职员流程类型
/// </summary>
[Description("职员流程类型")]
public enum EmployeeAffairTypeEnum
{
/// <summary>
/// 入职
/// </summary>
[Description("入职")]
ApplyInureEmpInPositon, /// <summary>
/// 转正
/// </summary>
[Description("转正")]
ApplyInureEmpInPass, /// <summary>
/// 兼职
/// </summary>
[Description("兼职")]
ApplyInureEmpPartJob, /// <summary>
/// 结束兼职
/// </summary>
[Description("结束兼职")]
ApplyInureEmpEndPartJob, /// <summary>
/// 异动
/// </summary>
[Description("异动")]
ApplyInureEmpInAdjust, /// <summary>
/// 离职
/// </summary>
[Description("离职")]
ApplyInureEmpInDimission, /// <summary>
/// 正式合同续签
/// </summary>
[Description("正式合同续签")]
ApplyInureEmpContractRenewal, /// <summary>
/// 职员群调审批
/// </summary>
[Description("职员群调审批")]
ApplyInureEmpGroupTransfer, /// <summary>
/// 行车津贴
/// </summary>
[Description("行车津贴")]
ApplyInureEmpMileage
} #endregion 职员流程类型 #region 职员申请单数据(入职、转正、异动、离职、兼职、结束兼职、合同续签、职员异动)的搜索视图 /// <summary>
/// 职员申请单数据(入职、转正、异动、离职、兼职、结束兼职、合同续签、职员异动)的搜索视图
/// </summary>
[Description("职员申请表视图")]
public enum EmployeeApplyViewEnum
{
/// <summary>
/// 入职
/// </summary>
[Description("VM_ApplyInureEmpInPositon")]
ApplyInureEmpInPositon, /// <summary>
/// 转正
/// </summary>
[Description("VM_ApplyInureEmpInPass")]
ApplyInureEmpInPass, /// <summary>
/// 兼职
/// </summary>
[Description("VM_ApplyInureEmpPartJob")]
ApplyInureEmpPartJob, /// <summary>
/// 结束兼职
/// </summary>
[Description("VM_ApplyInureEmpEndPartJob")]
ApplyInureEmpEndPartJob, /// <summary>
/// 异动
/// </summary>
[Description("VM_ApplyInureEmpInAdjust")]
ApplyInureEmpInAdjust, /// <summary>
/// 离职
/// </summary>
[Description("VM_ApplyInureEmpInDimission")]
ApplyInureEmpInDimission, /// <summary>
/// 正式合同续签
/// </summary>
[Description("VM_ApplyInureEmpContractRenewal")]
ApplyInureEmpContractRenewal, /// <summary>
/// 职员群调审批
/// </summary>
[Description("VM_ApplyInureEmpGroupTransfer")]
ApplyInureEmpGroupTransfer, /// <summary>
/// 行车津贴
/// </summary>
[Description("VM_ApplyInureEmpMileage")]
ApplyInureEmpMileage
} #endregion

调用方法:

            var affairDescription = EmployeeAffairTypeEnum.ApplyInureEmpContractRenewal.GetDescription();
Console.WriteLine(affairDescription);
var viewName = ((EmployeeApplyViewEnum)EmployeeAffairTypeEnum.ApplyInureEmpContractRenewal).GetDescription();
Console.WriteLine(viewName);

C# 获取枚举的描述Description的更多相关文章

  1. .NET获取枚举DescriptionAttribute描述信息性能改进的多种方法

    一. DescriptionAttribute的普通使用方式 1.1 使用示例 DescriptionAttribute特性可以用到很多地方,比较常见的就是枚举,通过获取枚举上定义的描述信息在UI上显 ...

  2. 枚举Enum转换为List,获取枚举的描述

    代码: public class EnumberHelper { public static List<EnumberEntity> EnumToList<T>() { Lis ...

  3. 获取枚举Name,Value,Description两种方法

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...

  4. C# 获取枚举的描述属性

    在使用枚举类型时,我们需要取名称和值,甚至有时候还需要取枚举类型的描述.通过反射,我们能获取到枚举类型的描述属性. 首先我们需要给枚举类型添加描述属性(属性都没有是不可能取到的),[Descripti ...

  5. C#获取枚举的描述

    public enum StatusEnum { /// <summary> /// 运行中 /// </summary> [Description("运行中&quo ...

  6. C#获取枚举描述代码

    public class MusterEnum { /// 获取枚举的描述信息 /// </summary> /// <param name="e">传入枚 ...

  7. c#枚举 获取枚举键值对、描述等

    using System; using System.Collections.Generic; using System.Collections.Specialized; using System.C ...

  8. .net工具类 获取枚举类型的描述

    一般情况我们会用枚举类型来存储一些状态信息,而这些信息有时候需要在前端展示,所以需要展示中文注释描述. 为了方便获取这些信息,就封装了一个枚举扩展类. /// <summary> /// ...

  9. C#记录日志、获取枚举值 等通用函数列表

    )             {                 ] >=  && ipvals[] <=                  && ipval ...

随机推荐

  1. Spring Boot笔记(六) springboot 集成 timer 定时任务

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 1.创建具体要执行的任务类: package com.example.poiutis.timer; im ...

  2. (Java实现) 营救

    问题 B: 营救 时间限制: 1 Sec 内存限制: 128 MB 题目描述 铁塔尼号遇险了!他发出了求救信号.距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里. 通过侦测,哥伦比亚号获 ...

  3. Java实现 蓝桥杯VIP 算法训练 连接字符串

    算法训练 连接字符串 时间限制:1.0s 内存限制:512.0MB 编程将两个字符串连接起来.例如country与side相连接成为countryside. 输入两行,每行一个字符串(只包含小写字母, ...

  4. SQL Server实现 LeetCode 178 分数排名

    178. 分数排名 SQL架构 编写一个 SQL 查询来实现分数排名.如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有& ...

  5. java实现求二十一位水仙花数(21位水仙花数)

    一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数. 例如: 当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水 ...

  6. Java实现 蓝桥杯 算法提高 扶老奶奶过街

    1 问题描述 一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: A :我和E都没有扶老奶奶 B :老奶奶是被C和E其中一个扶过大街的 C :老奶奶 ...

  7. Java实现有向图强连通分量的Tarjan算法

    1 问题描述 引用自百度百科: 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected).如果有向图G的每两个顶点都强连通,称G是一个强连通图.有向图的极大强连通子图,称为 ...

  8. java启动RabbitMQ消息报异常解决办法

    启动SpringCloud微服务,RabbitMQ报如下异常: 2019-08-12 18:15:49.543 ERROR 53096 --- [68.252.131:5672] o.s.a.r.c. ...

  9. 【asp.net core 系列】5 布局页和静态资源

    0. 前言 在之前的4篇的内容里,我们较为详细的介绍了路由以及控制器还有视图之间的关系.也就是说,系统如何从用户的HTTP请求解析到控制器里,然后在控制器里处理数据,并返回给视图,在视图中显示出来.这 ...

  10. opencl(7) 内核执行命令入队]工作组、工作项

    1:将内核执行命令入队(该命令可被多个工作项执行) cl_int clEnqueueNDRangeKernel( cl_command_queue command_queue, cl_kernel k ...