System.ComponentModel.DescriptionAttribute in portable class library

后端 未结 3 1248
灰色年华
灰色年华 2020-12-29 23:03

I am using the Description attribute in my enums to provide a user friendly name to an enum field. e.g.

public enum InstallationType
{
    [Description(\"For         


        
3条回答
  •  南笙
    南笙 (楼主)
    2020-12-29 23:10

    Since DescriptionAttribute is not available for portable class libraries you need to use another attribute. The namespace System.ComponentModel.DataAnnotations which is available for portable class libraries provides the attribute DisplayAttribute that you can use instead.

    public enum InstallationType
    {
        [Display(Description="Forward of Bulk Head")]
        FORWARD = 0,
    
        [Display(Description="Rear of Bulk Head")]
        REAR = 1,
    
        [Display(Description="Roof Mounted")]
        ROOF = 2,
    }
    

    Your method needs to be changed to

    public static string GetDescriptionFromEnumValue(Enum value)
        {
            DisplayAttribute attribute = value.GetType()
                .GetField(value.ToString())
                .GetCustomAttributes(typeof(DisplayAttribute ), false)
                .SingleOrDefault() as DisplayAttribute ;
            return attribute == null ? value.ToString() : attribute.Description;
        }
    

提交回复
热议问题