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 算力,解读结果公开显示在下面。

还没有人解读过这个文件。