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);
        }
示例#3
0
        public static double GetSurfaceArea(this Body body)
        {
            var visitor = new SurfaceAreaVisitor();

            // см описание этого трюка в GetDimensions
            body.Accept(visitor);
            return(visitor.SurfaceArea);
        }
示例#4
0
 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);
     }
 }
示例#5
0
        public static Dimensions GetDimensions(this Body body)
        {
            var visitor = new DimensionsVisitor();

            // Этот трюк с dynamic нужен, чтобы код компилировался,
            // пока вы выполняете первую задачу и ещё не создали метод Body.Accept.
            // В реальном коде он не нужен, а можно просто вызывать body.Accept(...)
            body.Accept(visitor);
            return(visitor.Dimensions);
        }