src/Library/NetPro.Utility/Extenisons/Extensions.Enum.cs
(开头部分) 7KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection;
namespace System.NetPro
{
public static partial class Extensions
{
public static string GetDisplayName(this Enum value)
{
var type = value.GetType();
if (!type.IsEnum) throw new ArgumentException(String.Format("Type '{0}' is not Enum", type));
var members = type.GetMember(value.ToString());
if (members.Length == 0)
{
return "";
}
var member = members[0];
var descriptionattributes = member.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (descriptionattributes.Length > 0)
{
return ((DescriptionAttribute)descriptionattributes[0]).Description;
}
else
{
var displayattributes = member.GetCustomAttributes(typeof(DisplayAttribute), false);
if (displayattributes.Length > 0)
{
return ((DisplayAttribute)displayattributes[0]).GetName();
}
else
{
return "";
}
}
}
/// <summary>
/// 获得枚举类中有Description标签的字典, 没有标签的为null
/// </summary>
/// <typeparam name="TEnum"></typeparam>
/// <returns></returns>
public static Dictionary<TEnum, string> GetDescriptions<TEnum>() where TEnum : struct, IComparable, IConvertible, IFormattable
{
var result = new Dictionary<TEnum, string>();
var values = Enum.GetValues(typeof(TEnum));
foreach (TEnum value in values)
{
var field = value.GetType().GetField(value.ToString());
var objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault();
var text = (objs as DescriptionAttribute)?.Description;
result.Add(value, text);
}
result = result.OrderBy(item => item.Key).ToDictionary(r => r.Key, v => v.Value);
return result;
}
后面还有 136 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。