列挙型に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;
}
ありがとう。