Чтобы получить непосредственного родителя типа, вы можете использовать свойство Type.BaseType
. Вы можете итеративно вызывать BaseType
, пока он не вернет null
, чтобы пройти вверх по иерархии наследования типа.
Например:
public static IEnumerable<Type> GetInheritanceHierarchy
(this Type type)
{
for (var current = type; current != null; current = current.BaseType)
yield return current;
}
Обратите внимание, что использование System.Object
в качестве конечной точки недопустимо, поскольку не все типы (например, типы интерфейса) наследуются от него.