メソッドを廃止または非推奨としてマークする方法は?


1003

C#を使用してメソッドを廃止または非推奨としてマークするにはどうすればよいですか?


ここでは廃止された属性のすべての3つのバリエーションを説明するYouTubeのビデオがある:youtube.com/watch?v=_AQ5wsPnfJ4
Shivprasadコイララ

3
あることも忘れないでください[EditorBrowsable(EditorBrowsableState.Never)]stackoverflow.com/a/9086345/661933)。少し異なる目的を果たします。
nawfal

回答:


1595

最短の方法は、メソッドにを属性ObsoleteAttributeとして追加することです。適切な説明を必ず含めてください。

[Obsolete("Method1 is deprecated, please use Method2 instead.")]
public void Method1()
{  }

また、次のようなコードのどこかからメソッドが呼び出された場合は、コンパイルを失敗させ、メソッドの使用を警告ではなくエラーとして扱うこともできます

[Obsolete("Method1 is deprecated, please use Method2 instead.", true)]

98
誰かがメソッドを使用した場合にコンパイラーがエラーをスローするようにするには、オーバーロードされたメソッドを使用しますObsolete(String Message、Bool error)
HitLikeAHammer

141
説明なしで廃止されたものは廃止されるべきです... notherdev.blogspot.com/2013/02/obsolete-should-be-obsolete.html
dotjoe

31
あなたの例では、「Method1 is deprecated」の部分はかなり冗長です。廃止としてマークすることで、実際に廃止されたと言うことになるので、メッセージでそれを再度述べる必要はありません。特に、結果の警告/エラーには「Method1」は廃止されているため、「Method1は非推奨です。代わりにMethod2を使用してください。」
非現実的な2015

8
それはいいです。必要に応じて、より具体的なメッセージを追加できることを示すために、テキストの例をいくつか示します。
Chris Ballance、2015

14
@ akshay2000メソッドの名前を変更または削除すると、名前が変更または削除された理由と、代わりに何を使用する必要があるかについて、コンシューマは無知のままになります。
Lensflare 16

136

警告を表示して廃止としてマークするには:

[Obsolete]
private static void SomeMethod()

使用すると警告が表示されます。

古い警告が表示されます

IntelliSenseの場合:

IntelliSenseの古い警告

メッセージが必要な場合:

[Obsolete("My message")]
private static void SomeMethod()

IntelliSenseツールのヒントは次のとおりです。

IntelliSenseが古いメッセージを表示する

最後に、使用法にエラーとしてフラグを立てる場合:

[Obsolete("My message", true)]
private static void SomeMethod()

使用すると、次のようになります。

メソッドの使用法がエラーとして表示される

注:メッセージを使用して、なぜ古くなっているのかではなく、代わりに何を使用すべきかを人々に伝えてください。


66

キーワードを使用してメソッドに注釈を追加しObsoleteます。メッセージ引数はオプションですが、アイテムが廃止された理由や代わりに何を使用するかを伝えることをお勧めします。
例:

[System.Obsolete("use myMethodB instead")]
void myMethodA()

36

ObsoleteAttribute非推奨のメソッドを表示できます。廃止された属性には3つのコンストラクタがあります。

  1. [Obsolete]: パラメータなしのコンストラクタであり、この属性を使用するデフォルトです。
  2. [Obsolete(string message)]:この形式messageでは、このメソッドが廃止された理由を理解できます。
  3. [Obsolete(string message, bool error)]:この形式のメッセージは非常に明示的ですがerror、コンパイル時にコンパイラがエラーを表示し、コンパイルが失敗するかどうかを示す必要があります。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.