public override void Visit(DocumentObject documentObject) { IVisitable visitable = documentObject as IVisitable; if (visitable != null) { visitable.AcceptVisitor(this, true); } }
/// <summary> /// Allows the visitor object to visit the document object and its child objects. /// </summary> void IVisitable.AcceptVisitor(DocumentObjectVisitor visitor, bool visitChildren) { visitor.VisitDocumentObjectCollection(this); foreach (DocumentObject docobj in this) { IVisitable visitable = docobj as IVisitable; if (visitable != null) { visitable.AcceptVisitor(visitor, visitChildren); } } }
/// <summary> /// Wraps and accepts the specified visitor. /// </summary> /// <param name="subject">The subject.</param> /// <param name="visitor">The visitor.</param> /// <returns> /// <c>true</c> if the subject was visited; <c>false</c> otherwise. /// </returns> public static bool AcceptVisitor(this IVisitable subject, object visitor) => subject.AcceptVisitor(new Visitor(visitor));