Enum の値の属性を取得する 質問する

Enum の値の属性を取得する 質問する

enum自体ではなく値の属性を取得できるかどうかを知りたいですenum。たとえば、次のようなものがあるとしますenum

using System.ComponentModel; // for DescriptionAttribute

enum FunkyAttributesEnum
{
    [Description("Name With Spaces1")]
    NameWithoutSpaces1,    
    [Description("Name With Spaces2")]
    NameWithoutSpaces2
}

私が望むのは、列挙型を指定して、列挙文字列値とその説明の 2 組を生成することです。

価値は簡単でした:

Array values = System.Enum.GetValues(typeof(FunkyAttributesEnum));
foreach (int value in values)
    Tuple.Value = Enum.GetName(typeof(FunkyAttributesEnum), value);

しかし、 を設定するために、説明属性の値を取得するにはどうすればよいでしょうかTuple.Desc? 属性がenum自体に属している場合は、その方法が考えられますが、 の値からそれを取得する方法がわかりませんenum

ベストアンサー1

これで必要な処理が完了するはずです。

try
{
  var enumType = typeof(FunkyAttributesEnum);
  var memberInfos = 
  enumType.GetMember(FunkyAttributesEnum.NameWithoutSpaces1.ToString());
  var enumValueMemberInfo = memberInfos.FirstOrDefault(m => 
  m.DeclaringType == enumType);
  var valueAttributes = 
  enumValueMemberInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);
  var description = ((DescriptionAttribute)valueAttributes[0]).Description;
}
catch
{
    return FunkyAttributesEnum.NameWithoutSpaces1.ToString()
}

おすすめ記事