Enum value from display name

前端 未结 2 911
梦如初夏
梦如初夏 2020-12-31 06:10

I am new with C# and I have some troubles with enum.

I have Enum defined like this:

public enum CustomFields
{
    [Display(Name = \"first_name\")]
          


        
2条回答
  •  感动是毒
    2020-12-31 06:54

    Try the following.

    void Main()
    {   
        CustomFields value1 = GetEnumValue("first_name");
        CustomFields value2 = GetEnumValue("last_name");
    }
    
    static Dictionary displayNameMapping;
    
    static CustomFields GetEnumValue(String displayName){
        if (displayNameMapping == null){
            var enumType = typeof(CustomFields);
            var displayAttributeType = typeof(DisplayAttribute);
            CustomFields? found = null;
    
            displayNameMapping = new Dictionary();
            Enum.GetNames(enumType).ToList().ForEach(name=>{
                var member = enumType.GetMember(name).First();
                var displayAttrib = (DisplayAttribute)member.GetCustomAttributes(displayAttributeType, false).First();
                displayNameMapping.Add(displayAttrib.Name, (CustomFields)Enum.Parse(enumType, name));
            });
        }
    
        return displayNameMapping[displayName];
    }
    
    // Define other methods and classes here
    public enum CustomFields
    {
        [Display(Name = "first_name")]
        FirstName = 1,
    
        [Display(Name = "last_name")]
        LastName = 2,
    }
    

提交回复
热议问题