///// <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)); }
/// <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); }
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); }
/// <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); }