En este video explicare el patrón de diseño prototype deep en c# .Net, sis inconvenientes y su diferencia con el patrón de diseño prototype shallow.
Código
public class Animal : ICloneable { public int Patas { get; set; } public string Nombre { get; set; } public Detalles Rasgos { get; set; } public object Clone() { Animal clonado = this.MemberwiseClone() as Animal; Detalles detalles = new Detalles(); detalles.Color = this.Rasgos.Color; detalles.Raza = this.Rasgos.Raza; clonado.Rasgos = detalles; return clonado; } } public class Detalles { public string Color { get; set; } public string Raza { get; set; } } //De esta manera se demuestra Animal oAnimal = new Animal() { Nombre = "Oveja Dolly", Patas = 4 }; oAnimal.Rasgos = new Detalles(); oAnimal.Rasgos.Color = "Blanca"; oAnimal.Rasgos.Raza = "Oveja"; Animal oAnimalClonado = oAnimal.Clone() as Animal; oAnimalClonado.Rasgos.Color = "Negro"; oAnimalClonado.Nombre = "Oveja negra"; Console.WriteLine("animal original: "+oAnimal.Rasgos.Color); Console.WriteLine("annimal clonado: "+oAnimalClonado.Rasgos.Color); Console.WriteLine("animal original: "+oAnimal.Nombre); Console.WriteLine("animal clonado: "+oAnimalClonado.Nombre);
Todos mis videos de patrones de diseño en C# .Net: https://www.youtube.com/watch?v=K902i_tsXl0&list=PLWYKfSbdsjJiiaXNIW1OYhRnStsyGvr6t