Existe-t-il des propriétés d'extension en C# ?
Bonjour à tous ! J'ai récemment commencé à apprendre C# et j'ai rencontré une situation intéressante. Je sais qu'il existe en C# des méthodes d'extension (extension methods) qui permettent d'ajouter de nouvelles méthodes à des types existants sans modifier leur code source. Par exemple, je peux écrire une méthode d'extension pour une chaîne :
```csharp
public static class StringExtensions
{
public static bool IsPalindrome(this string str)
{
// vérification de palindrome
}
}
```
Cela fonctionne parfaitement. Mais j'ai besoin non seulement d'un comportement, mais précisément d'une propriété. Supposons que j'ai une classe `Order` provenant d'une bibliothèque tierce, et je souhaite lui ajouter une propriété calculée `TotalPrice` qui additionnerait le coût de tous les articles de la commande. Je ne peux pas modifier la classe `Order` car elle ne m'appartient pas.
Est-il possible de faire quelque chose comme ceci ?
```csharp
// Je veux cela, mais cela ne compile pas
public static class OrderExtensions
{
public static decimal TotalPrice { get { return this.Items.Sum(i => i.Price * i.Quantity); } }
}
```