How to read the Value for an EnumMember attribute

This is an extension method that works with C# 8 and nullable reference types:

public static string? GetEnumMemberValue<T>(this T value)
    where T : Enum
{
    return typeof(T)
        .GetTypeInfo()
        .DeclaredMembers
        .SingleOrDefault(x => x.Name == value.ToString())
        ?.GetCustomAttribute<EnumMemberAttribute>(false)
        ?.Value;
}

Original Answer:

I’ve adapted this for .NET Core. Here it is:

public static String GetEnumMemberValue<T>(T value)
    where T : struct, IConvertible
{
    return typeof(T)
        .GetTypeInfo()
        .DeclaredMembers
        .SingleOrDefault(x => x.Name == value.ToString())
        ?.GetCustomAttribute<EnumMemberAttribute>(false)
        ?.Value;
}

Leave a Comment