Filtration/Filtration.ObjectModel/Extensions/EnumHelper.cs

39 lines
1.3 KiB
C#
Raw Normal View History

2015-06-04 13:15:54 -04:00
using System;
using System.ComponentModel;
2015-06-24 14:57:16 -04:00
namespace Filtration.ObjectModel.Extensions
2015-06-04 13:15:54 -04:00
{
2015-06-24 14:57:16 -04:00
public static class EnumHelper
2015-06-04 13:15:54 -04:00
{
public static T GetAttributeOfType<T>(this Enum enumVal) where T : 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 string GetAttributeDescription(this Enum enumValue)
{
var attribute = enumValue.GetAttributeOfType<DescriptionAttribute>();
return attribute == null ? String.Empty : attribute.Description;
}
public static T GetEnumValueFromDescription<T>(string description)
{
var fis = typeof(T).GetFields();
foreach (var fi in fis)
{
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes.Length > 0 && attributes[0].Description == description)
return (T)Enum.Parse(typeof(T), fi.Name);
}
throw new Exception("Not found");
}
}
}