static IEnumerable<Type> GetAllInterfaceTypes (Type type) { yield return type; foreach (var t in type.GetInterfaces ()) foreach (var tt in GetAllInterfaceTypes (t)) yield return tt; }