|
using iTextSharp.text.pdf.qrcode;
|
using iWare_SCADA_Model;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Reflection;
|
namespace iWare_SCADA_BusinessLogical.Utils
|
{
|
/// <summary>
|
/// 枚举类
|
/// </summary>
|
public class EnumberHelper
|
{
|
/// <summary>
|
/// 获取转换枚举值的字符串
|
/// </summary>
|
/// <param name="mode"></param>
|
/// <returns></returns>
|
public static string GetEnumName<T>(int mode) where T : struct
|
{
|
T t = default(T);
|
bool isRight = EnumberHelper.GetEnumObject<T>(mode.ToString(), out t);
|
if (isRight)
|
{
|
return t.ToString();
|
}
|
return "";
|
}
|
|
///// <summary>
|
///// 获取转换枚举值的字符串
|
///// </summary>
|
///// <param name="mode"></param>
|
///// <returns></returns>
|
//public static T GetEnum<T>(int mode) where T : struct
|
//{
|
// T t = default(T);
|
// bool isRight = EnumberHelper.GetEnumObject<T>(mode.ToString(), out t);
|
// if (isRight)
|
// {
|
// return t;
|
// }
|
// throw new Exception("转换失败");
|
//}
|
|
/// <summary>
|
/// 根据枚举值转换枚举
|
/// </summary>
|
/// <typeparam name="T"></typeparam>
|
/// <param name="enumValue"></param>
|
/// <returns></returns>
|
public static bool GetEnumObject<T>(string enumValue, out T t) where T : struct
|
{
|
bool right = Enum.TryParse(enumValue.ToString(), out t);
|
if (right)
|
{
|
// 需要通过此方法再次确定是否是枚举实际定义的内容
|
if (!Enum.IsDefined(typeof(T), t))
|
{
|
return false;
|
}
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
|
public static T GetEnumForString<T>(string enumValue) where T : struct
|
{
|
T t = default(T);
|
bool isRight = EnumberHelper.GetEnumObject<T>(enumValue, out t);
|
return t;
|
|
}
|
|
/// <summary>
|
/// 枚举转集合
|
/// </summary>
|
/// <typeparam name="T"></typeparam>
|
/// <returns></returns>
|
public static List<EnumberEntity> EnumToList<T>()
|
{
|
List<EnumberEntity> list = new List<EnumberEntity>();
|
|
foreach (var e in Enum.GetValues(typeof(T)))
|
{
|
EnumberEntity m = new EnumberEntity();
|
object[] objArr = e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), true);
|
if (objArr != null && objArr.Length > 0)
|
{
|
DescriptionAttribute da = objArr[0] as DescriptionAttribute;
|
m.Desction = da.Description;
|
}
|
m.EnumValue = Convert.ToInt32(e);
|
m.EnumName = e.ToString();
|
list.Add(m);
|
}
|
return list;
|
}
|
|
/// <summary>
|
/// 获取枚举的描述属性
|
/// </summary>
|
/// <param name="enumValue">枚举值</param>
|
/// <returns>枚举的描述属性</returns>
|
public static string GetEnumDescription(Enum en)
|
{
|
Type type = en.GetType(); //获取类型
|
MemberInfo[] memberInfos = type.GetMember(en.ToString()); //获取成员
|
if (memberInfos != null && memberInfos.Length > 0)
|
{
|
DescriptionAttribute[] attrs = memberInfos[0].GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[]; //获取描述特性
|
|
if (attrs != null && attrs.Length > 0)
|
{
|
return attrs[0].Description; //返回当前描述
|
}
|
}
|
return en.ToString();
|
}
|
|
}
|
}
|