33 lines
1.2 KiB
C#
33 lines
1.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace CurrencyAlert
|
|
{
|
|
public static class EnumHelper
|
|
{
|
|
/// <summary>
|
|
/// Gets an attribute on an enum field value
|
|
/// </summary>
|
|
/// <typeparam name="T">The type of the attribute you want to retrieve</typeparam>
|
|
/// <param name="enumVal">The enum value</param>
|
|
/// <returns>The attribute of type T that exists on the enum value</returns>
|
|
/// <example><![CDATA[string desc = myEnumVariable.GetAttributeOfType<DescriptionAttribute>().Description;]]></example>
|
|
public static T GetAttributeOfType<T>(this System.Enum enumVal) where T : System.Attribute
|
|
{
|
|
var type = enumVal.GetType();
|
|
var memInfo = type.GetMember(enumVal.ToString());
|
|
var attributes = memInfo[0].GetCustomAttributes(typeof(T), false);
|
|
return (attributes.Length > 0) ? (T)attributes[0] : null;
|
|
}
|
|
|
|
public static void Each<T>(Action<T> action)
|
|
{
|
|
foreach (var item in System.Enum.GetValues(typeof(T)))
|
|
action((T)item);
|
|
}
|
|
}
|
|
}
|