Как получить тип класса родительского свойства после использования 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, поскольку свойство может иметь несколько уровней глубины.


person thecoolmacdude    schedule 11.04.2017    source источник


Ответы (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

person M. Ferry    schedule 11.04.2017