.NET コンパイラの警告を ObsoleteAttribute
.NET の ObsoleteAttribute
は、非推奨のコード要素にフラグを立てるためによく使用されます。 ただし、より微妙な警告が必要な場合、その機能は制限されます。この記事では、カスタマイズされたコンパイラ警告を生成するためのカスタム属性の作成について説明します。
課題は、ObsoleteAttribute
が封印されており、直接継承が妨げられているという事実にあります。 解決策には、ObsoleteAttribute
の基礎となる警告メカニズムを利用するカスタム属性を作成することが含まれます。
警告を強化するためのカスタム属性の作成
2 つのカスタム属性、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 中国語 Web サイトの他の関連記事を参照してください。