src/YL.Utils/Extensions/EnumExt.cs

(开头部分) 2KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;

namespace YL.Utils.Extensions
{
    public static class EnumExt
    {
        public static string GetDescription(this Enum obj)
        {
            var fi = obj.GetType().GetField(obj.ToString());
            var arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
            return arrDesc[0]?.Description;
        }

        public static T ToEnum<T>(this string obj)
        {
            return (T)Enum.Parse(typeof(T), obj);
        }

        public static string GetDescription<T>(string obj)
        {
            var fi = typeof(T).GetField(obj);
            var arrDesc = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
            return arrDesc[0]?.Description;
        }

        public static Dictionary<int, string> ToDict(this Enum obj)
        {
            var enumDict = new Dictionary<int, string>();
            foreach (int enumValue in Enum.GetValues(obj.GetType()))
            {
                enumDict.Add(enumValue, enumValue.ToString());
            }
            return enumDict;
        }

        public static List<string> ToList<T>()
        {
            //Type t = typeof(T);
            //var ty = t.GetFields(BindingFlags.Public | BindingFlags.Static)
            //.Where(p => t.IsAssignableFrom(p.FieldType))
            //.Select(pi => (T)pi.GetValue(null))
            //.ToList();
            return Enum.GetValues(typeof(T)).Cast<T>().Select(x => x.ToString()).ToList();
        }

        public static List<KeyValuePair<int, string>> ToKVList<T>()
        {
            var keys = new List<KeyValuePair<int, string>>();
            foreach (var e in Enum.GetValues(typeof(T)))
            {
                object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
                DescriptionAttribute da = objArr?[0] as DescriptionAttribute;
                keys.Add(new KeyValuePair<int, string>(Convert.ToInt32(e), da.Description));
            }
            return keys;
        }
后面还有 12 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

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