emums上的多个描述属性

时间:2010-08-09 06:16:48

标签: .net c#-4.0

C#4.0

如果我想为枚举设置描述,我可以使用DescriptionAttribute表单System.ComponentModel;

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

但如果我需要另一个特定描述,我可以实现我的特定属性和扩展方法,它将返回此附加描述。 e.g:

public enum EnumWithDescription
{

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

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

可能还有其他更简单的方法吗?

2 个答案:

答案 0 :(得分:3)

您可以像这样扩展DescriptionAttribute:

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 :(得分:1)

未使用DescriptionAttribute,因为AllowMultiple设置为false。但是,您总是可以使 属性允许多个值 - 或者如果您要设置两种类型的描述,则可以创建一个封装这两种类型的属性。

说实话,很难看出它比你提出的代码容易多少。你可以有一个扩展方法来指定要检索的属性,当然(我已经开始为Unconstrained Melody编写其中一个)但除此之外,看起来你的表现相当不错。