Пример #1
0
        /* Tal vez este sea un punto importante donde implementar el clone (no hace falta optar por usar el clone superficial de C# porque aquí se especifica cómo se hace el Clone)
         * public override ITerm Clone()
         * {
         *  return (ITerm)MemberwiseClone();
         * } */

        // En vez de ITerm Clone() voy a poner object Clone()
        public override object Clone()                                                                                    // En vez de devolver IPlanBody podría devolver algo más genérico como ITerm... seguramente necesitaría ambas versiones de Clone, no sé
        {
            PlanBodyImpl c = term == null ? new PlanBodyImpl() : new PlanBodyImpl(formType, (ITerm)term.Clone(), isTerm); // Como uso el Clone de C# lo que clono son object que luego hay que castear...

            c.isTerm = isTerm;
            if (next != null)
            {
                c.SetBodyNext(GetBodyNext().ClonePB());
            }
            return(c);
        }
Пример #2
0
 public bool Add(int index, IPlanBody bl)
 {
     if (index == 0)
     {
         IPlanBody newpb = new PlanBodyImpl(formType, term);
         newpb.SetBodyNext(next);
         Swap(bl);
         next = bl.GetBodyNext();
         GetLastBody().SetBodyNext(newpb);
     }
     else if (next != null)
     {
         next.Add(index - 1, bl);
     }
     else
     {
         next = bl;
     }
     return(true);
 }