Skip to content

Instantly share code, notes, and snippets.

@emersonsoares
Last active August 29, 2015 13:57
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save emersonsoares/9920470 to your computer and use it in GitHub Desktop.
Save emersonsoares/9920470 to your computer and use it in GitHub Desktop.
Solution for friendly enums
public static class EnumEx
{
public static string GetNormalizedString(this Enum value)
{
if (value == null)
return string.Empty;
var type = value.GetType();
var fieldInfo = type.GetField(value.ToString());
var attribs = fieldInfo.GetCustomAttributes(
typeof(NormalizedStringAttribute), false) as NormalizedStringAttribute[];
return attribs != null && attribs.Length > 0 ? attribs[0].NormalizedString : value.ToString();
}
}

Usage

public enum Countries 
{
  Brazil,
  [NormalizedString("United States of America")]
  EUA,
  Jamaica
}

var brazil = Countries.Brazil;
var eua = Countries.EUA;

Console.Writeline(brasil.GetNormalizedString()); //Outputs "Brazil";
Console.Writeline(eua.GetNormalizedString()); //Outputs "United States of America"
public class NormalizedStringAttribute : Attribute
{
public string NormalizedString { get; private set; }
public NormalizedStringAttribute(string normalizedString)
{
NormalizedString = normalizedString;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment