Ejemplo n.º 1
0
        ///// <summary>
        ///// Gets a Value Name for a particular enum value.
        ///// </summary>
        ///// <param name="enumValue">Enum value</param>
        ///// <returns>String Value Name associated via a <see cref="EnumAdditionalAttribute"/> attribute, or null if not found.</returns>
        //public static String GetValueName(this Enum enumValue)
        //{
        //	Contract.Requires(enumValue != null);

        //	var provider = new EnumAdditionalProvider<EnumAdditionalAttribute>();
        //	return provider.GetEnumResource(enumValue)?.ValueName ?? String.Empty;
        //}

        /// <summary>
        /// Gets a Description for a particular enum value.
        /// </summary>
        /// <param name="enumValue">Enum value</param>
        /// <returns>String Value associated via a <see cref="EnumAdditionalAttribute"/> attribute, or null if not found.</returns>
        public static String GetDescription(this Enum enumValue)
        {
            Contract.Requires(enumValue != null);

            EnumAdditionalProvider <EnumAdditionalAttribute> provider = new EnumAdditionalProvider <EnumAdditionalAttribute>();
            EnumAdditionalAttribute resource = provider.GetEnumResource(enumValue);

            return(resource != null ? resource.Description : Enum.GetName(enumValue.GetType(), enumValue));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets an enum for a particular enum value.
        /// </summary>
        /// <param name="enumValue">Enum value</param>
        /// <returns>String Value associated via a <see cref="StringValueAttribute"/> attribute, or null if not found.</returns>
        public static Int32 GetEnumInt(Enum enumValue)
        {
            Contract.Requires(enumValue != null);

            Int32 result = 0;
            EnumAdditionalProvider <EnumAdditionalAttribute> provider = new EnumAdditionalProvider <EnumAdditionalAttribute>();
            EnumAdditionalAttribute resource = provider.GetEnumResource(enumValue);

            if (resource != null)
            {
                result = resource.EnumValue;
            }
            return(result);
        }
Ejemplo n.º 3
0
        private static IList <EnumAdditionalAttribute> GetEnumsCore(Type enumType)
        {
            List <EnumAdditionalAttribute> result = new List <EnumAdditionalAttribute>();

            //Look for our string value associated with fields in this enum
            foreach (FieldInfo fieldInfo in enumType.GetFields())
            {
                //Check for our custom attribute
                EnumAdditionalAttribute[] attributes = fieldInfo.GetCustomAttributes(typeof(EnumAdditionalAttribute), false) as EnumAdditionalAttribute[];
                if (attributes != null && attributes.Length > 0)
                {
                    EnumAdditionalAttribute attribute = attributes[0];
                    attribute.EnumValue = (Int32)fieldInfo.GetValue(enumType);
                    //attribute.ValueName = fieldInfo.Name;
                    result.Add(attribute);
                }
            }
            return(result);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Gets the first non empty value of either Code, Name or Description for a particular enum value.
        /// </summary>
        /// <param name="enumValue">Enum value</param>
        /// <returns>String Value associated via a <see cref="EnumAdditionalAttribute"/> attribute, or null if not found.</returns>
        public static String GetCodeNameOrDescription(this Enum enumValue)
        {
            if (enumValue == null)
            {
                throw new ArgumentNullException(nameof(enumValue));
            }

            String result;
            EnumAdditionalProvider <EnumAdditionalAttribute> provider = new EnumAdditionalProvider <EnumAdditionalAttribute>();
            EnumAdditionalAttribute resource = provider.GetEnumResource(enumValue);

            if (resource != null)
            {
                if (!resource.Code.IsEmpty())
                {
                    result = resource.Code;
                }
                else if (!resource.HumanisedName.IsEmpty())
                {
                    result = resource.HumanisedName;
                }
                else if (!resource.Description.IsEmpty())
                {
                    result = resource.Description;
                }
                else
                {
                    result = Enum.GetName(enumValue.GetType(), enumValue);
                }
            }
            else
            {
                result = enumValue.ToString();
            }
            return(result);
        }