Avatar ·

لماذا لا يجب أن ترث من List<T> في C#؟ البدائل وأفضل الممارسات

مرحبًا بالجميع! أنا مطور C# مبتدئ وواجهت موقفًا حيث أحتاج إلى إنشاء فئة خاصة بي تتصرف مثل قائمة ولكن مع منطق إضافي. على سبيل المثال، أحتاج إلى تخزين قائمة الطلبات، وأريد أنه عند إضافة طلب جديد يتم إعادة حساب المجموع الإجمالي تلقائيًا. اعتقدت أن أسهل طريقة هي أن أرث من `List` وأضيف دوالي الخاصة. هذا ما حصلت عليه: ```csharp public class OrderList : List { public decimal TotalSum { get; private set; } public new void Add(Order order) { base.Add(order); TotalSum += order.Price; } public new bool Remove(Order order) { bool result = base.Remove(order); if (result) TotalSum -= order.Price; return result; } } ``` يبدو أنه يعمل، لكنني قرأت العديد من المقالات التي تقول إن الوراثة من `List` هي ممارسة سيئة. لماذا؟ فهي مريحة جدًا! إذا كان لا يمكن الوراثة