using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
#if !UNITY_WEBGL
using System.Reflection;
#endif
using UnityEngine;
/********************************************************************************
*Create By CG
*Function 枚举控制
*********************************************************************************/
namespace CG.UTility
{
public class EnumCtrl
{
//public enum ModelType
//{
// ///
// /// 缺省值
// ///
// [Description("默认状态")]
// None,
// ///
// /// 牛的同期发情处理
// ///
// [Description("牛的同期发情处理")]
// TQFAQCL,
// ///
// /// 牛的超数排卵处理
// ///
// [Description("牛的超数排卵处理")]
// CSPLCL,
// ///
// /// 精子活率检查
// ///
// [Description("精子活率检查")]
// JZLVJC,
// ///
// /// 牛的人工授精
// ///
// [Description("牛的人工授精")]
// RGSJ,
// ///
// /// 牛的冲胚
// ///
// [Description("牛的冲胚")]
// CP,
// ///
// /// 胚胎选择
// ///
// [Description("胚胎选择")]
// PTXZ,
// ///
// /// 胚胎移植
// ///
// [Description("胚胎移植")]
// PTYZ,
// ///
// /// 妊娠诊断
// ///
// [Description("妊娠诊断")]
// YYZD
//}
public static string GetEnumDescription(System.Enum enumValue)
{
#if UNITY_WEBGL
return null;
#else
string value = enumValue.ToString();
FieldInfo field = enumValue.GetType().GetField(value);
object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (objs == null || objs.Length == 0)
{
return value;
}
DescriptionAttribute descriptionAttribute = (DescriptionAttribute)objs[0];
return descriptionAttribute.Description;
#endif
}
public static T GetEnumByDescription(string description) where T : struct
{
#if UNITY_WEBGL
return default(T);
#else
System.Type type = typeof(T);
FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly);
foreach (FieldInfo field in fields)
{
object[] attributes = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes.Length > 0 && ((DescriptionAttribute)attributes[0]).Description == description)
{
return (T)field.GetValue(null);
}
}
return default(T);
#endif
}
}
}