枚举处理

//=======================================================================================
/****************************************************************************************
*
* 文件说明:
* 作者:
* 创始时间:2017/11/9 17:23:01
* 创建说明:
*****************************************************************************************/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Manjinba.Communication.Common.Utils
{
public static class EnumUtil
{
private static Dictionary<string, Dictionary<string, string>> enumCache;

private static Dictionary<string, Dictionary<string, string>> EnumCache
{
get
{
if (enumCache == null)
{
enumCache = new Dictionary<string, Dictionary<string, string>>();
}
return enumCache;
}
set { enumCache = value; }
}

public static string GetEnumText(this Enum en)
{
string enString = string.Empty;
if (null == en) return enString;
var type = en.GetType();
enString = en.ToString();
if (!EnumCache.ContainsKey(type.FullName))
{
var fields = type.GetFields();
Dictionary<string, string> temp = new Dictionary<string, string>();
foreach (var item in fields)
{
var attrs = item.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attrs.Length == 1)
{
string v = ((DescriptionAttribute)attrs[0]).Description;
temp.Add(item.Name, v);
}
}
EnumCache.Add(type.FullName, temp);
}
if (EnumCache.ContainsKey(type.FullName))
{
if (EnumCache[type.FullName].ContainsKey(enString))
{
return EnumCache[type.FullName][enString];
}
}
return enString;
}
}
}

posted @   Nine4酷  阅读(98)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示