1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using AspectCore.Extensions.Reflection;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Reflection;
- namespace wms.util.Ext
- {
- 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 string GetDescription<T>(this Enum obj)
- {
- var refactor = typeof(T).GetField(obj.ToString()).GetReflector();
- var arrDesc = refactor.GetCustomAttributes(typeof(DescriptionAttribute));
- return ((DescriptionAttribute)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 refactor = typeof(T).GetField(obj).GetReflector();
- var arrDesc = refactor.GetCustomAttributes(typeof(DescriptionAttribute));
- return ((DescriptionAttribute)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;
- }
- public static List<KeyValuePair<int, string>> ToKVListLinq<T>()
- {
- Type t = typeof(T);
- return t.GetFields(BindingFlags.Public | BindingFlags.Static)
- .Where(p => t.IsAssignableFrom(p.FieldType))
- .Select(a => new KeyValuePair<int, string>(Convert.ToInt32(a.GetValue(null)),
- (a.GetCustomAttributes(typeof(DescriptionAttribute), true)?[0] as DescriptionAttribute).Description)
- ).ToList();
- }
- }
- }
|