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

Другие вопросы по тегам