Avatar ·

在C#中存在扩展属性(extension properties)吗?

大家好!我最近刚开始学习C#,遇到了一个有趣的情况。我知道C#中有扩展方法(extension methods),可以在不修改现有类型源代码的情况下向其添加新方法。例如,我可以为字符串编写一个扩展方法: ```csharp public static class StringExtensions { public static bool IsPalindrome(this string str) { // 回文检查 } } ``` 这运行得很好。但我需要的不仅仅是行为,而是一个属性。假设我有一个来自第三方库的`Order`类,我想给它添加一个计算属性`TotalPrice`,用于汇总订单中所有商品的总价。我无法修改`Order`类,因为它不属于我。 能否实现类似这样的功能? ```csharp // 我希望这样写,但无法编译 public static class OrderExtensions { public static decimal TotalPrice { get { return this.Items.Sum(i => i.Price * i.Quantity); } } } ```