属性を取得するためのこのenum
拡張メソッドを見てください。Description
public static string GetDescription(this Enum enumValue)
{
var memberInfo = enumValue.GetType().GetMember(enumValue.ToString());
if (memberInfo.Length < 1)
return null;
var attributes = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
return attributes.Length > 0 ? ((DescriptionAttribute)attributes[0]).Description : enumValue.ToString();
}
属性enum
の例:Description
public enum Colors
{
[Description("Navy Blue")]
Blue,
[Description("Lime Green")]
Green
}
最後に、拡張メソッドの使用法:
var blue = Colors.Blue;
Console.WriteLine(blue.GetDescription());
// Console output: Navy Blue
私の質問は、enum
sに関してはif (memberInfo.Length < 1)
チェックが必要ですか?から返された配列GetMember()
が空になることはありenum
ますか? 次のように空を宣言できることを知っていますenum
:
public enum Colors
{
}
しかし、型の変数を作成できるかどうかはわかりませんColors
...
var green = Colors. // What goes here?
チェックを削除しif (memberInfo.Length < 1)
たいのですが、後で問題が発生する場合は削除したくありません (空enum
の が必要になる理由は思いつきませんが、他の開発者はおそらくGetDescription()
拡張メソッドを使用するでしょう) 。 .