How to set space on Enum

后端 未结 14 1484
栀梦
栀梦 2020-11-29 08:00

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

public enum category
{
    goodBoy=1,
    BadBoy
}

I want to set



        
14条回答
  •  伪装坚强ぢ
    2020-11-29 08:38

    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 ToDictionary(Enum myEnum)
        {
            var myEnumType = myEnum.GetType();
            var names = myEnumType.GetFields()
                .Where(m => m.GetCustomAttribute() != null)
                .Select(e => e.GetCustomAttribute().Name);
            var values = Enum.GetValues(myEnumType).Cast();
            return names.Zip(values, (n, v) => new KeyValuePair(v, n))
                .ToDictionary(kv => kv.Key, kv => kv.Value);
        }
    }
    

    Then use it:

    Boys.GoodBoy.ToDictionary()
    

提交回复
热议问题