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 } } }