如何获得MemberInfo的MemberInfo?

时间:2017-09-21 06:39:03

标签: reflection enums

班级在这里:

   public partial class CodeMergeNodeHandler
   {
        [State]
        public enum State
        {
            [Finish]
            [Label("合并成功")]
            Accepted,

            [Start]
            [Label("创建成功")]
            Created,
        }
  }

我确实得到了州的MemberInfo:

 var members = CodeMergeNodeHandler.GetType().GetMembers();

 MemberInfo memberOfState ;  // the MemberInfo of the Enum State;
 foreach (var member in members)
 {
   var attrs = member.GetCustomAttributes();
   if (attrs.Any(attr => attr is StateAttribute))
   {
        memberOfState = member;
   }
 }

我尝试获取memberOfState的成员,AcceptedCreated

private static (string start, string end) GetStartEnd(this MemberInfo member)
 {
     var start = default(string);
     var end = default(string);

     var members = member.GetMembers();   //error, here is my question.

    foreach (var sub in members)
    {
      var attrs = sub.GetCustomAttributes();
      if (attrs.Any(attr => attr.GetType() == typeof(StartAttribute)))
      {
        start = sub.ToString();
      }
      if (attrs.Any(attr => attr.GetType() == typeof(FinishAttribute)))
      {
        end = sub.ToString();
      }
    }

    return (start, end);
}

为什么member没有方法作为GetMembers(),但是当我像图片一样调试时,目标位于DeclaredMembers,我怎么能得到它们?

enter image description here

1 个答案:

答案 0 :(得分:0)

我解决了这个问题:

 Type type  = member as Type;

将MemberInfo类作为Type类,可以使用Type of Type类。