private static IEnumerable<TypeInfo> GetAllBaseTypes(TypeInfo type) { if (type.BaseType != null) { foreach (var baseType in GetAllBaseTypes(type.BaseType.GetTypeInfo())) { yield return baseType; } } if (type.GetType() != typeof(object)) { yield return type; } }