2017-04-11 8 views
0

Ich benutze GetProperties, um eine Liste von Eigenschaften für eine Klasse zu erhalten.Wie erhalte ich den Klassentyp der übergeordneten Eigenschaft, nachdem ich GetProperties verwendet habe, um eine Liste von Eigenschaften für eine Klasse abzurufen?

Dim properties As List(Of PropertyInfo) = objType.GetProperties(BindingFlags.Instance Or BindingFlags.Public).ToList() 
For Each prop As PropertyInfo In properties 
    'how do I get the parent class type of the prop (level up in hierarchy from property's ReflectedType)? 
Next 

Wie erhalte ich die eine Ebene nach oben übergeordneten Klasse der ReflectedType aktuelle Eigenschaft? Beachten Sie, dass diese Klasse mehrere Elternebenen haben könnte. Ich will nicht die BaseType der aktuellen Eigenschaft der Klasse, aber einfach die nächste Ebene in der Hierarchie der Eigenschaft ReflectedType als eine Eigenschaft könnte mehrere Schichten tief sein.

Antwort

1

ich einen Ansatz, wie diese versuchen würde - im Grunde eine Schleife, um den Vererbungsbaumes zu Fuß bis ...

Public Function WalkInheritanceFromProperty(pi As PropertyInfo) As List(Of Type) 
    Dim currentType As Type = pi.ReflectedType 
    Dim parentType As Type 
    Dim lst As New List(Of Type) 

    Do 
     parentType = currentType.BaseType 
     If Not parentType Is Nothing Then lst.Add(parentType) Else Exit Do 
     currentType = parentType 
    Loop While Not parentType Is Nothing 
    Return lst 
End Function 

Hier einige Informationen, die helfen können: https://msdn.microsoft.com/en-us/library/system.type.basetype(v=vs.110).aspx

Verwandte Themen