Skip to content

Instantly share code, notes, and snippets.

@niikoo
Created October 12, 2020 08:54
Show Gist options
  • Save niikoo/e83d76e875fb04c3d930b95d7e2330f5 to your computer and use it in GitHub Desktop.
Save niikoo/e83d76e875fb04c3d930b95d7e2330f5 to your computer and use it in GitHub Desktop.
public static class EnumExtensions
{
public static string GetEnumMemberValue<T>(this T type)
where T : Enum
{
var enumType = typeof(T);
var name = Enum.GetName(enumType, type);
var enumMemberAttribute = ((EnumMemberAttribute[])enumType.GetField(name).GetCustomAttributes(typeof(EnumMemberAttribute), true)).Single();
return enumMemberAttribute.Value;
}
public static T ToEnum<T>(this string str)
where T : Enum
{
var enumType = typeof(T);
foreach (var name in Enum.GetNames(enumType))
{
var enumMemberAttribute = ((EnumMemberAttribute[])enumType.GetField(name).GetCustomAttributes(typeof(EnumMemberAttribute), true)).Single();
if (enumMemberAttribute.Value == str) return (T)Enum.Parse(enumType, name);
}
return default;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment