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
可能还有其他更简单的方法吗?
答案 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编写其中一个)但除此之外,看起来你的表现相当不错。