/// <summary>
        /// GetEnumValueByTag 根据描述Tag获取对应的枚举值
        /// </summary>
        public static object GetEnumValueByTag(Type enumType, object tag)
        {
            IList <EnumDescriptionAttribute> list = EnumDescriptionAttribute.GetDescriptions(enumType);

            if (list == null)
            {
                return(null);
            }
            return(list.ConvertFirst <EnumDescriptionAttribute, object>(ed => ed.enumValue, ed => string.Equals(ed.Tag.ToString(), tag.ToString())));
        }
        /// <summary>
        /// GetFieldTag 获得指定枚举值的Tag。
        /// </summary>
        /// <param name="enumValue"></param>
        /// <returns></returns>
        public static object GetFieldTag(object enumValue)
        {
            IList <EnumDescriptionAttribute> list = EnumDescriptionAttribute.GetDescriptions(enumValue.GetType());

            if (list == null)
            {
                return(null);
            }

            return(list.ConvertFirst <EnumDescriptionAttribute, object>(ed => ed.Tag, ed => string.Equals(ed.EnumValue.ToString(), enumValue.ToString())));
        }
        /// <summary>
        /// GetFieldDescriptionText 获得指定枚举值的描述文本。
        /// </summary>
        public static string GetFieldText(object enumValue)
        {
            IList <EnumDescriptionAttribute> list = EnumDescriptionAttribute.GetDescriptions(enumValue.GetType());

            if (list == null)
            {
                return(null);
            }
            list.ToArray();
            return(list.ConvertFirst <EnumDescriptionAttribute, string>(ed => ed.Description, ed => string.Equals(ed.EnumValue.ToString(), enumValue.ToString())));
        }
        public static T GetEnumValueByDescription <T>(string description)
        {
            IList <EnumDescriptionAttribute> list = EnumDescriptionAttribute.GetDescriptions(typeof(T));

            return((T)list.First(ed => string.Equals(ed.Description, description)).EnumValue);
        }