將 .NET 編譯器警告擴展到 ObsoleteAttribute
.NET 中的 ObsoleteAttribute
常用於標記已棄用的程式碼元素。 但是,當需要更細緻的警告時,其功能會受到限制。本文探討建立自訂屬性以產生自訂的編譯器警告。
挑戰在於ObsoleteAttribute
被密封,無法直接繼承。 此解決方案涉及建立利用 ObsoleteAttribute
底層警告機制的自訂屬性。
為增強警告建立自訂屬性
我們將建立兩個自訂屬性:MustRefactor
和 TooManyArgs
。
<code class="language-csharp">[Obsolete("Should be refactored")] public class MustRefactorAttribute : Attribute { } [Obsolete("Try removing some arguments")] public class TooManyArgsAttribute : Attribute { }</code>
這些屬性雖然簡單,但利用 Obsolete
屬性來觸發編譯器警告。 Obsolete
屬性中的訊息定義警告文字。
實作並利用自訂屬性
將這些屬性套用至方法或屬性會產生指定的警告。
<code class="language-csharp">[MustRefactorAttribute] public void DoEverything() { } [MustRefactorAttribute] [TooManyArgsAttribute] public User(string userName) { this.userName = userName; }</code>
在此範例中,DoEverything()
將產生「應該重構」警告,而 User
建構函式將產生「應該重構」和「嘗試刪除一些參數」警告。
限制與注意事項
雖然此方法提供了自訂警告,但不會直接處理訊息串聯。警告單獨顯示,而不是組合訊息。 此方法依賴編譯器對 ObsoleteAttribute
的固有處理,提供了一種實用的解決方法,可以創建比單獨內建屬性提供的警告更具描述性的警告。 產生的警告可能格式不完美,但它們提供了更高的清晰度和程式碼維護指導。
以上是如何在 .NET 中建立 ObsoleteAttribute 之外的自訂編譯器警告?的詳細內容。更多資訊請關注PHP中文網其他相關文章!