2017-09-21 2 views
-1

die Klasse hier:Wie erhalte ich MemberInfo's MemberInfo?

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

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

ich die Member des Staates hatte hat bekam:

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; 
    } 
} 

Ich versuche, die Mitglieder des memberOfState zu bekommen, die Accepted und die Created:

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); 
} 

Warum member haben keine Methode wie GetMembers(), aber wenn ich Debug wie das Bild, das Ziel ist in der DeclaredMembers, und wie kann ich sie bekommen ??

enter image description here

+0

Wie ich weiß, '' 'MemberInfo''' ist die Basisklasse von' '' Type'''. –

Antwort

0

löste ich die Frage:

Type type = member as Type; 

die Member Klasse als Typ-Klasse machen, können Sie Methoden der Type-Klasse verwenden.

Verwandte Themen