Несколько атрибутов описания в emums - PullRequest
3 голосов
/ 09 августа 2010

C # 4.0

Если я хочу задать описание для enum, я могу использовать форму описания атрибута System.ComponentModel;

public enum EnumWithDescription
{
    [Description("EnumDescription1")]
    EE = 1,
    [Description("EnumDescription2")]
    PP
}

, но если мне нужно другое конкретное описание, я могу реализовать свой конкретный атрибути метод расширения, который будет возвращать это дополнительное описание.Например:

public enum EnumWithDescription
{

    [MyDescritption("MyDescription1")]
    [Description("EnumDescription1")]
    EE = 1
}

anumValue.MyExtensionMethod(); // return me MyDescritpion stirng value

Может быть есть еще несколько более простых способов сделать это?

Ответы [ 2 ]

3 голосов
/ 09 августа 2010

Вы можете расширить Описание атрибута так:

class ExtraDescriptionAttribute : DescriptionAttribute
    {
        private string extraInfo;
        public string ExtraInfo { get { return extraInfo; } set { extraInfo = value; } }

        public ExtraDescriptionAttribute(string description)
        {
            this.DescriptionValue = description;
            this.extraInfo = "";
        }
    }
1 голос
/ 09 августа 2010

Не используется DescriptionAttribute, поскольку для AllowMultiple установлено значение false.Тем не менее, вы всегда можете сделать так, чтобы ваш атрибут допускал множественные значения - или, если у вас есть два типа описания для установки, вы можете создать атрибут, который включает оба из них.Трудно понять, насколько проще это может быть, чем код, который вы представили.Конечно, у вас может быть метод расширения, который указывает, какой атрибут извлекать (я начал писать один из них для Неограниченная мелодия ), но помимо этого, похоже, что у вас все хорошо.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...