public static Dimensions GetDimensions(this Body body) { var visitor = new DimensionsVisitor(); body.Accept(visitor); return(visitor.Dimensions); }
public static double GetSurfaceArea(this Body body) { var visitor = new SurfaceAreaVisitor(); body.Accept(visitor); return(visitor.SurfaceArea); }
public static double GetSurfaceArea(this Body body) { var visitor = new SurfaceAreaVisitor(); // см описание этого трюка в GetDimensions body.Accept(visitor); return(visitor.SurfaceArea); }
public void Accept(IVisitor visitor) { visitor.visit(this); engine.Accept(visitor); body.Accept(visitor); for (int i = 0; i < wheels.Length; i++) { wheels[i].Accept(visitor); } }
public static Dimensions GetDimensions(this Body body) { var visitor = new DimensionsVisitor(); // Этот трюк с dynamic нужен, чтобы код компилировался, // пока вы выполняете первую задачу и ещё не создали метод Body.Accept. // В реальном коде он не нужен, а можно просто вызывать body.Accept(...) body.Accept(visitor); return(visitor.Dimensions); }