忽略
This commit is contained in:
@@ -1,149 +1,149 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Hncore.Infrastructure.Extension
|
||||
{
|
||||
public static class EnumExtension
|
||||
{
|
||||
public static Dictionary<int, string> ToDictionary<T>()
|
||||
{
|
||||
Dictionary<int, string> dic = new Dictionary<int, string>();
|
||||
string namestr = "";
|
||||
foreach (var e in Enum.GetValues(typeof(T)))
|
||||
{
|
||||
namestr = "";
|
||||
|
||||
object[] objArrDisplay = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DisplayAttribute), true);//Display
|
||||
if (objArrDisplay.Any())
|
||||
{
|
||||
var da = objArrDisplay[0] as DisplayAttribute;
|
||||
namestr = da.Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
object[] objArrDescription = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);//Description
|
||||
namestr = objArrDescription.Any() ? (objArrDescription[0] as DescriptionAttribute).Description : e.ToString();
|
||||
}
|
||||
int value = Convert.ToInt32(e);
|
||||
|
||||
|
||||
|
||||
// string str = item.GetDescription();
|
||||
// int value = (int) item;
|
||||
|
||||
dic.Add(value, namestr);
|
||||
}
|
||||
|
||||
return dic;
|
||||
}
|
||||
#region 获取枚举的相关信息的集合
|
||||
/// <summary>
|
||||
/// 获取枚举的相关信息的集合
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <returns></returns>
|
||||
public static List<EnumInfo> EnumToList<T>()
|
||||
{
|
||||
var list = new List<EnumInfo>();
|
||||
foreach (var e in Enum.GetValues(typeof(T)))
|
||||
{
|
||||
var m = new EnumInfo();
|
||||
object[] objArrDisplay = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DisplayAttribute), true);//Display
|
||||
if (objArrDisplay.Any())
|
||||
{
|
||||
var da = objArrDisplay[0] as DisplayAttribute;
|
||||
m.Name = da.Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
object[] objArrDescription = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);//Description
|
||||
m.Name = objArrDescription.Any() ? (objArrDescription[0] as DescriptionAttribute).Description : e.ToString();
|
||||
}
|
||||
m.Value = Convert.ToInt32(e);
|
||||
list.Add(m);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
public class EnumInfo
|
||||
{
|
||||
public string Name { set; get; }
|
||||
|
||||
public int Value { set; get; }
|
||||
}
|
||||
#endregion
|
||||
public static string GetDisplayName<T>(T enumValue)
|
||||
{
|
||||
object[] objArrDisplay = enumValue.GetType().GetField(enumValue.ToString())
|
||||
?.GetCustomAttributes(typeof(DisplayAttribute), true);//Display
|
||||
if (objArrDisplay!=null&&objArrDisplay.Any())
|
||||
{
|
||||
var da = objArrDisplay[0] as DisplayAttribute;
|
||||
return da?.Name;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取枚举上通过DisplayName、Description或Display柱注的名称
|
||||
/// 优先级为DisplayName>Description>Display
|
||||
/// </summary>
|
||||
/// <param name="e">枚举值</param>
|
||||
/// <returns>枚举名称</returns>
|
||||
///
|
||||
public static string GetEnumDisplayName(this Enum e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Type t = e.GetType();
|
||||
FieldInfo fi = t.GetField(Enum.GetName(t, e));
|
||||
var dna = fi.GetCustomAttribute<DisplayNameAttribute>();
|
||||
if (dna != null)
|
||||
return dna.DisplayName;
|
||||
var da = fi.GetCustomAttribute<DescriptionAttribute>();
|
||||
if (da != null)
|
||||
return da.Description;
|
||||
var d = fi.GetCustomAttribute<DisplayAttribute>();
|
||||
if (d != null)
|
||||
return d.Name;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return "获取枚举"+e.GetType().FullName+"名称错误:"+ex.Message;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static string ToHtmlSelectOptions<T>()
|
||||
{
|
||||
var dic = ToDictionary<T>();
|
||||
|
||||
string str = "";
|
||||
|
||||
foreach (var key in dic.Keys)
|
||||
{
|
||||
str += "<option value=\"" + key + "\">" + dic[key] + "</option>";
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
#region 判断值是否在枚举类型中存在
|
||||
|
||||
/// <summary>
|
||||
/// 判断值是否在枚举中存在
|
||||
/// </summary>
|
||||
/// <param name="enumValue">需要判断的参数</param>
|
||||
/// <param name="enumType">枚举类型</param>
|
||||
/// <returns></returns>
|
||||
public static bool IsExist(this int enumValue, Type enumType)
|
||||
{
|
||||
return Enum.IsDefined(enumType, enumValue);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Hncore.Infrastructure.Extension
|
||||
{
|
||||
public static class EnumExtension
|
||||
{
|
||||
public static Dictionary<int, string> ToDictionary<T>()
|
||||
{
|
||||
Dictionary<int, string> dic = new Dictionary<int, string>();
|
||||
string namestr = "";
|
||||
foreach (var e in Enum.GetValues(typeof(T)))
|
||||
{
|
||||
namestr = "";
|
||||
|
||||
object[] objArrDisplay = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DisplayAttribute), true);//Display
|
||||
if (objArrDisplay.Any())
|
||||
{
|
||||
var da = objArrDisplay[0] as DisplayAttribute;
|
||||
namestr = da.Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
object[] objArrDescription = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);//Description
|
||||
namestr = objArrDescription.Any() ? (objArrDescription[0] as DescriptionAttribute).Description : e.ToString();
|
||||
}
|
||||
int value = Convert.ToInt32(e);
|
||||
|
||||
|
||||
|
||||
// string str = item.GetDescription();
|
||||
// int value = (int) item;
|
||||
|
||||
dic.Add(value, namestr);
|
||||
}
|
||||
|
||||
return dic;
|
||||
}
|
||||
#region 获取枚举的相关信息的集合
|
||||
/// <summary>
|
||||
/// 获取枚举的相关信息的集合
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <returns></returns>
|
||||
public static List<EnumInfo> EnumToList<T>()
|
||||
{
|
||||
var list = new List<EnumInfo>();
|
||||
foreach (var e in Enum.GetValues(typeof(T)))
|
||||
{
|
||||
var m = new EnumInfo();
|
||||
object[] objArrDisplay = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DisplayAttribute), true);//Display
|
||||
if (objArrDisplay.Any())
|
||||
{
|
||||
var da = objArrDisplay[0] as DisplayAttribute;
|
||||
m.Name = da.Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
object[] objArrDescription = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);//Description
|
||||
m.Name = objArrDescription.Any() ? (objArrDescription[0] as DescriptionAttribute).Description : e.ToString();
|
||||
}
|
||||
m.Value = Convert.ToInt32(e);
|
||||
list.Add(m);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
public class EnumInfo
|
||||
{
|
||||
public string Name { set; get; }
|
||||
|
||||
public int Value { set; get; }
|
||||
}
|
||||
#endregion
|
||||
public static string GetDisplayName<T>(T enumValue)
|
||||
{
|
||||
object[] objArrDisplay = enumValue.GetType().GetField(enumValue.ToString())
|
||||
?.GetCustomAttributes(typeof(DisplayAttribute), true);//Display
|
||||
if (objArrDisplay!=null&&objArrDisplay.Any())
|
||||
{
|
||||
var da = objArrDisplay[0] as DisplayAttribute;
|
||||
return da?.Name;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取枚举上通过DisplayName、Description或Display柱注的名称
|
||||
/// 优先级为DisplayName>Description>Display
|
||||
/// </summary>
|
||||
/// <param name="e">枚举值</param>
|
||||
/// <returns>枚举名称</returns>
|
||||
///
|
||||
public static string GetEnumDisplayName(this Enum e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Type t = e.GetType();
|
||||
FieldInfo fi = t.GetField(Enum.GetName(t, e));
|
||||
var dna = fi.GetCustomAttribute<DisplayNameAttribute>();
|
||||
if (dna != null)
|
||||
return dna.DisplayName;
|
||||
var da = fi.GetCustomAttribute<DescriptionAttribute>();
|
||||
if (da != null)
|
||||
return da.Description;
|
||||
var d = fi.GetCustomAttribute<DisplayAttribute>();
|
||||
if (d != null)
|
||||
return d.Name;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return "获取枚举"+e.GetType().FullName+"名称错误:"+ex.Message;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static string ToHtmlSelectOptions<T>()
|
||||
{
|
||||
var dic = ToDictionary<T>();
|
||||
|
||||
string str = "";
|
||||
|
||||
foreach (var key in dic.Keys)
|
||||
{
|
||||
str += "<option value=\"" + key + "\">" + dic[key] + "</option>";
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
#region 判断值是否在枚举类型中存在
|
||||
|
||||
/// <summary>
|
||||
/// 判断值是否在枚举中存在
|
||||
/// </summary>
|
||||
/// <param name="enumValue">需要判断的参数</param>
|
||||
/// <param name="enumType">枚举类型</param>
|
||||
/// <returns></returns>
|
||||
public static bool IsExist(this int enumValue, Type enumType)
|
||||
{
|
||||
return Enum.IsDefined(enumType, enumValue);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user