C# 声明枚举、枚举值描述 获取枚举值字符串 根据枚举获取枚举值描述

一、声明枚举值、枚举值描述

using System.ComponentModel;

public enum status
{
	/// <summary>
	/// 取消
	/// </summary>
	[Description("取消")]
	cancel,
	/// <summary>
	/// 提交
	/// </summary>
	[Description("提交")]
	submit,
	/// <summary>
	/// 同意
	/// </summary>
	[Description("批准")]
	pass,
	/// <summary>
	/// 驳回
	/// </summary>
	[Description("驳回")]
	reject
}

二、获取枚举值字符串、根据枚举获取枚举值描述

/// <summary>
/// 获取枚举描述信息
/// </summary>
/// <param name="enumValue"></param>
/// <returns></returns>
public static string GetEnumDescription(this Enum enumValue) {
	string str = enumValue.ToString();
	System.Reflection.FieldInfo field = enumValue.GetType().GetField(str);
	object[] objs = field.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute) , false);
	if (objs == null || objs.Length == 0)
		return str;
	System.ComponentModel.DescriptionAttribute da = (System.ComponentModel.DescriptionAttribute)objs[0];
	return da.Description;
}

/*
示例:string statusDes = status.submit.GetEnumDescription();
*/

/// <summary>
/// 枚举字符串
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="enumValue"></param>
/// <returns></returns>
public static string GetEnumString<T>(this Enum enumValue) {
	return Enum.GetName(typeof(T) , enumValue);//推荐  
}

/*
示例:string status = status.submit.GetEnumString<status>();
*/

/// <summary>
/// 根据Description获取枚举
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="description">枚举描述</param>
/// <returns>枚举</returns>
public static string GetEnumName<T>(string description)
{
	Type _type = typeof(T);
	foreach (FieldInfo field in _type.GetFields())
	{
		DescriptionAttribute[] _curDesc = field.GetDescriptAttr();
		if (_curDesc != null && _curDesc.Length > 0)
		{
			if (_curDesc[0].Description == description)
				return field.GetValue(null).ToString();
		}
	}

	return null;
}

/*
示例:string status = GetEnumName<status>("提交");
*/

三、根据枚举值变量获取枚举描述信息

status statusEnum;
//方式1
Enum.TryParse<status>(strStatus, out statusEnum);

//方式2
statusEnum = (status)Enum.Parse(typeof(status), strStatus);

string strStatusDes = statusEnum.GetEnumDescription();

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值