方法类:

    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. Java实现 蓝桥杯 算法提高 三角形

    算法提高 12-1三角形 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体.分别设计独立的函数计算三角形的周长.面积. ...

  2. Java实现 LeetCode 407 接雨水 II(二)

    407. 接雨水 II 给定一个 m x n 的矩阵,其中的值均为正整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水. 说明: m 和 n 都是小于110的整数.每一个单位的高 ...

  3. Java实现 蓝桥杯VIP 算法训练 sign函数

    试题 算法训练 sign函数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定实数x,输出sign(x)的值. sign(x)是符号函数,如果x>0,则返回1:如果x=0, ...

  4. Java实现 LeetCode_0048_RotateImage

    package javaLeetCode.medium; public class RotateImage_48 { public static void main(String[] args) { ...

  5. Java实现 蓝桥杯 历届试题 矩阵翻硬币

    问题描述 小明先把硬币摆成了一个 n 行 m 列的矩阵. 随后,小明对每一个硬币分别进行一次 Q 操作. 对第x行第y列的硬币进行 Q 操作的定义:将所有第 ix 行,第 jy 列的硬币进行翻转. 其 ...

  6. java实现第六届蓝桥杯生成回文数

    生成回文数 所谓回文数就是左右对称的数字,比如: 585,5885,123321- 当然,单个的数字也可以算作是对称的. 小明发现了一种生成回文数的方法: 比如,取数字19,把它与自己的翻转数相加: ...

  7. java实现第六届蓝桥杯三角形面积

    三角形面积 题目描述 如图1所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字. 28 简单的数学平面几何问题: 大正方形面 ...

  8. 体验SpringBoot(2.3)应用制作Docker镜像(官方方案)

    关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...

  9. Qt自动生成.rc文件并配置对应属性 程序图标 版本 描述等

    Qt项目配置文件pro里需要如下配置,进行qmake,build后会自动生成.rc文件,并将对应的信息写入文件中 VERSION = 1.0.0.1 RC_ICONS = "http.ico ...

  10. char 型变量中能不能存贮一个中文汉字?为什么?

    在c语言中,char类型占一个字节,而汉字占两个字节,所以不能存储. 在java语言中,char类型占两个字节,而java默认采用Unicode码是16位,所以一个Unicode码占两个字节,java ...