Clonación profunda de objetos en C#: ¿cómo copiar correctamente un objeto complejo con todas las referencias anidadas?
¡Hola a todos! Soy nuevo en C# y me encontré con un problema al copiar objetos. Tengo una clase `Person` que contiene campos de referencia, por ejemplo, `List`. Cuando intento hacer una copia mediante asignación simple (`var copy = original;`), los cambios en `copy` afectan a `original`. Entiendo que esto es una copia superficial (shallow copy) y necesito una copia profunda (deep clone).
Intenté implementar `ICloneable`, pero crea una copia superficial. Intenté copiar manualmente cada campo, pero es horrible cuando hay muchos objetos y están anidados.
Aquí hay un ejemplo de mi código:
```csharp
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public List Addresses { get; set; } = new List();
}
// Uso:
var person1 = new Person { Name = "Iván", Age = 30 };
person1.Addresses.Add(new Address { Street