هل توجد في لغة 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); } }
}
```