我有一个扩展方法,它允许我向枚举中添加一个Description属性。
典型的枚举如下所示:
public enum Legal
{
[Description("INVALID!")]
None = 0,
[Description("general-terms")]
General = 1,
[Description("competition-terms")]
Competition = 2,
[Description("privacy-policy")]
Privacy = 3,
[Description("cookie-policy")]
Cookies = 4
}在使用枚举(并添加了它的名称空间)时,我仍然发现需要在使用System.ComponentModel名称空间的任何地方添加它。有什么办法可以解决这个问题吗?
下面是扩展方法:
public static string Description(this Enum @this)
{
@this.ThrowNull("@this");
var memInfo = @this.GetType().GetMember(@this.ToString());
if (memInfo.IsNotNullOrEmpty())
{
var attribute = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attribute.IsNotNullOrEmpty())
return ((DescriptionAttribute)attribute[0]).Description;
}
return null;
}谢谢。
发布于 2013-03-01 21:59:05
如果需要使用description属性,则必须引用它的名称空间。但是,我很少使用该属性。从代码文档的角度来看,Simple intellisense (XML)注释可以很好地工作。
[Flags]
public enum PetTypes
{
/// <summary>An option for cats!</summary>
Cats = 1,
/// <summary>An option for dogs!</summary>
Dogs = 2
/// <summary>Bill Murray style</summary>
MassHysteria = 3
}https://stackoverflow.com/questions/15159247
复制相似问题