/* 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); }
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); }