有没有办法在使用枚举时避免添加System.ComponentModel namspace?

时间:2013-03-01 13:44:58

标签: asp.net enums

我有一个扩展方法,允许我在我的枚举中添加一个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;
    }

感谢。

1 个答案:

答案 0 :(得分:0)

如果需要使用description属性,则必须引用它的命名空间。但是,我很少使用该属性。从代码文档的角度来看,简单的intellisense(XML)注释工作正常,IMO。

[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
}