public override void VisitElementB(ElementB elementB) { // Код который мог быть размещен в классе ElementB, // расширяет собой класс ElementB. elementB.SomeState = "State B"; Console.WriteLine(elementB.SomeState); // Работа с разнородным интерфейсом. elementB.OperationB(); }
static void Main() { ElementA elementA = new ElementA(); ElementB elementB = new ElementB(); elementA.VisitConcreteElementA(); elementB.VisitConcreteElementB(); // Задержка. Console.ReadKey(); }
public abstract void VisitElementB(ElementB el);
public override void VisitElementB(ElementB el) { Console.WriteLine("{0} visited by {1}", el.GetType().Name, this.GetType().Name); }
public abstract void VisitElementB(ElementB elementB);
public static void VisitConcreteElementB(this ElementB element) { element.OperationB(); }