Как получить тип класса родительского свойства после использования GetProperties, чтобы получить список свойств класса?
Я использую GetProperties, чтобы получить список свойств для класса.
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
Как я могу получить родительский класс на один уровень выше текущего свойства ReflectedType
? Обратите внимание, что этот класс может иметь несколько родительских уровней. Я не хочу BaseType
класса текущего свойства, но просто на следующий уровень вверх в иерархии свойства ReflectedType
как свойство может быть несколько слоев в глубину.
1 ответ
Решение
Я бы попробовал такой подход - в основном цикл, идущий вверх по дереву наследования...
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
Вот некоторая информация, которая может помочь: https://msdn.microsoft.com/en-us/library/system.type.basetype(v=vs.110).aspx