目前,C# 缺乏對擴充屬性的內建支援。 這表示您無法在不修改原始程式碼的情況下直接向現有類型新增屬性。
原生擴充屬性的省略源自於幾個因素。 C# 設計團隊尚未優先考慮此功能,實現它需要對編譯器進行大量更改,可能會引入錯誤或效能瓶頸。
雖然無法提供直接支持,但有解決方法。 使用 TypeDescriptor
允許在運行時附加屬性,但這偏離標準屬性語法並且有限制。 PostSharp 或 Mono.Cecil 等第三方工具透過修改程式碼或中間語言 (IL) 來提供編譯後屬性新增。 然而,這可能會阻礙編譯器最佳化。
.NET 社群積極討論擴充屬性。 它們有可能包含在未來的 C# 版本中。
擴充屬性的可能語法(如果實現的話)可能類似於:
<code class="language-csharp">// Extend the string class with a 'WordCount' property public extension string : IWordCount { public int WordCount { get; } }</code>
這將提供一種向任何類型添加屬性的乾淨方法。
擴充屬性的好處是顯而易見的:
雖然 C# 目前缺乏本機擴充屬性支持,但存在可行的替代方案,並且未來的版本可能會包含此強烈要求的功能。 它的採用將顯著提高語言的靈活性和程式碼組織。
以上是為什麼 C# 本身不支援擴充屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!