Ejemplo n.º 1
0
        /// <summary>
        /// 根据描述找到枚举对象的值
        /// </summary>
        /// <param name="enumType"></param>
        /// <param name="description"></param>
        /// <returns></returns>
        public static int GetEnumValue(Type enumType, string description)
        {
            EnumItemDescriptionList enumList = EnumItemDescriptionAttribute.GetDescriptionList(enumType);

            EnumItemDescription found = null;

            foreach (EnumItemDescription item in enumList)
            {
                if (item.Description == description)
                {
                    found = item;
                    break;
                }
            }

            if (found == null)
            {
                throw new ArgumentException(string.Format("无法在类型为{0}的枚举中找到描述为{1}的枚举对象", enumType.Name, description));
            }

            return(found.EnumValue);
        }
        private static EnumItemDescriptionList GetDescriptionListFromEnumType(Type enumType)
        {
            List <EnumItemDescription> eidList = new List <EnumItemDescription>();

            FieldInfo[] fileds = enumType.GetFields();

            for (int i = 0; i < fileds.Length; i++)
            {
                FieldInfo fi = fileds[i];

                if (fi.IsLiteral && fi.IsStatic)
                {
                    eidList.Add(EnumItemDescription.CreateFromFieldInfo(fi, enumType));
                }
            }

            eidList.Sort(delegate(EnumItemDescription x, EnumItemDescription y)
            {
                return(Math.Sign(x.SortId - y.SortId));
            }
                         );

            return(new EnumItemDescriptionList(eidList));
        }