Clonagem profunda de objetos em C#: como copiar corretamente um objeto complexo com todas as referências aninhadas?
Olá a todos! Sou novo em C# e encontrei um problema ao copiar objetos. Tenho uma classe `Person` que contém campos de referência, como `List`. Quando tento fazer uma cópia por atribuição simples (`var copy = original;`), as alterações em `copy` afetam `original`. Entendo que isso é uma cópia superficial (shallow copy) e preciso de uma cópia profunda (deep clone).
Tentei implementar `ICloneable`, mas ele cria uma cópia superficial. Tentei copiar manualmente cada campo, mas isso é terrível quando há muitos objetos e eles são aninhados.
Aqui está um exemplo do meu 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 = "Ivan", Age = 30 };
person1.Addresses.Add(new Address { Street