static void VisitTypeHierarchy(Type type, Action<Type> action) {
if (type == null) return;
action(type);
VisitTypeHierarchy(type.BaseType, action);
}
Пример:
VisitTypeHierarchy(typeof(MyType), t => Console.WriteLine(t.Name));
Вы можете легко иметь дело с абстрактными классами, используя свойство Type.IsAbstract
.