Пример #1
0
        /// <summary>
        /// 根据枚举值,返回描述字符串
        /// 如果多选枚举,返回以","分割的字符串
        /// </summary>
        /// <param name="e">EnumTitleAttribute</param>
        /// <returns>返回描述字符串</returns>
        public static string GetAllEnumTitle(this EnumTitleAttribute e)
        {
            string[]      _valueArray = e.ToString().Split(ENUM_TITLE_SEPARATOR.ToArray(), StringSplitOptions.RemoveEmptyEntries);
            Type          _type       = e.GetType();
            StringBuilder _builder    = new StringBuilder();

            foreach (string enumValue in _valueArray)
            {
                FieldInfo _field = _type.GetField(enumValue.Trim());

                if (_field == null)
                {
                    continue;
                }

                EnumTitleAttribute[] _attrs = _field.GetCustomAttributes(typeof(EnumTitleAttribute), false) as EnumTitleAttribute[];

                if (_attrs != null && _attrs.Length > 0)
                {
                    _builder.AppendFormat("{0}{1}", _attrs[0].Title, ENUM_TITLE_SEPARATOR);
                }
            }

            return(_builder.ToString().TrimEnd(ENUM_TITLE_SEPARATOR.ToArray()));
        }
Пример #2
0
        private static EnumTitleAttribute GetEnumTitleAttribute(Enum e)
        {
            string[]           valueArray = e.ToString().Split(ENUM_TITLE_SEPARATOR.ToArray(), StringSplitOptions.RemoveEmptyEntries);
            Type               type       = e.GetType();
            EnumTitleAttribute _ret       = null;

            foreach (string enumValue in valueArray)
            {
                FieldInfo _field = type.GetField(enumValue.Trim());

                if (_field == null)
                {
                    continue;
                }

                EnumTitleAttribute[] _attrs = _field.GetCustomAttributes(typeof(EnumTitleAttribute), false) as EnumTitleAttribute[];

                if (_attrs != null && _attrs.Length > 0)
                {
                    _ret = _attrs[0];
                    break;
                }
            }

            return(_ret);
        }
Пример #3
0
        private static Dictionary <T, EnumTitleAttribute> GetItemAttributeList <T>()
            where T : struct
        {
            Dictionary <T, EnumTitleAttribute> _dic = new Dictionary <T, EnumTitleAttribute>();

            Array _array = typeof(T).GetEnumValues();

            foreach (object t in _array)
            {
                EnumTitleAttribute _att = GetEnumTitleAttribute(t as Enum);

                if (_att != null)
                {
                    _dic.Add((T)t, _att);
                }
            }

            return(_dic);
        }