internal static IEnumerable<Type> SelfAndBaseTypes(this Type type) { if (type.IsInterface) { List<Type> types = new List<Type>(); AddInterface(types, type); return types; } return SelfAndBaseClasses(type); }