0

列挙型に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;
    }

ありがとう。

4

1 に答える 1

0

description 属性を使用する必要がある場合は、その名前空間を参照する必要があります。しかし、私はめったにその属性を使用しません。単純なインテリセンス (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
}
于 2013-03-01T13:59:04.620 に答える