C# – How to set space on Enum

c++

I want to set the space on my enum. Here is my code sample:

public enum category
{
    goodBoy=1,
    BadBoy
}

I want to set

public enum category
{
    Good Boy=1,
    Bad Boy  
}

When I retrieve I want to see Good Boy result from the enum

Best Solution

You can decorate your Enum values with DataAnnotations, so the following is true:

using System.ComponentModel.DataAnnotations;

public enum Boys
{
    [Display(Name="Good Boy")]
    GoodBoy,
    [Display(Name="Bad Boy")]
    BadBoy
}

I'm not sure what UI Framework you're using for your controls, but ASP.NET MVC can read DataAnnotations when you type HTML.LabelFor in your Razor views.

Here' a Extension method

If you are not using Razor views or if you want to get the names in code:

public class EnumExtention
{
    public Dictionary<int, string> ToDictionary(Enum myEnum)
    {
        var myEnumType = myEnum.GetType();
        var names = myEnumType.GetFields()
            .Where(m => m.GetCustomAttribute<DisplayAttribute>() != null)
            .Select(e => e.GetCustomAttribute<DisplayAttribute>().Name);
        var values = Enum.GetValues(myEnumType).Cast<int>();
        return names.Zip(values, (n, v) => new KeyValuePair<int, string>(v, n))
            .ToDictionary(kv => kv.Key, kv => kv.Value);
    }
}

Then use it:

Boys.GoodBoy.ToDictionary()