Avatar ·

هل توجد في لغة C# خصائص امتداد (extension properties)؟

```html مرحباً بالجميع! لقد بدأت مؤخراً في تعلم لغة C# وواجهت موقفاً مثيراً للاهتمام. أعلم أنه في لغة C# توجد طرق تمديد (extension methods) تسمح بإضافة طرق جديدة إلى الأنواع الموجودة دون تغيير الكود الأصلي الخاص بها. على سبيل المثال، يمكنني كتابة طريقة تمديد للسلسلة النصية: ```csharp public static class StringExtensions { public static bool IsPalindrome(this string str) { // التحقق من تماثل الحروف } } ``` هذا يعمل بشكل رائع. لكن ما أحتاجه ليس مجرد سلوك، بل خاصية (property) تحديداً. لنفترض أن لدي كلاس `Order` من مكتبة خارجية، وأريد إضافة خاصية محسوبة `TotalPrice` إليه، تقوم بجمع تكلفة جميع بنود الطلب. لا أستطيع تغيير الكلاس `Order` لأنه ليس ملكي. هل يمكن فعل شيء كهذا؟ ```csharp // أريد هذا، لكنه لا يتم ترجمته public static class OrderExtensions { public static decimal TotalPrice { get { return this.Items.Sum(i => i.Price * i.Quantity); } } } ```