استنساخ عميق للكائنات في C#: كيف تنسخ كائنًا معقدًا مع جميع المراجع المتداخلة بشكل صحيح؟
مرحبًا بالجميع! أنا مبتدئ في C# وقد واجهت مشكلة عند نسخ الكائنات. لدي كلاس `Person` يحتوي على حقول مرجعية، مثل `List`. عندما أحاول عمل نسخة عن طريق الإسناد البسيط (`var copy = original;`)، فإن التغييرات في `copy` تؤثر على `original`. أفهم أن هذا هو النسخ السطحي (shallow copy)، وأحتاج إلى النسخ العميق (deep clone).
لقد جربت تنفيذ `ICloneable`، لكنه ينشئ نسخة سطحية. حاولت نسخ كل حقل يدويًا، لكن هذا فظيع عندما يكون هناك العديد من الكائنات وتكون متداخلة.
إليك مثال على الكود الخاص بي:
```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();
}
// الاستخدام:
var person1 = new Person { Name = "إيفان", Age = 30 };
person1.Addresses.Add(new Address { Street