web-dev-qa-db-ja.com

メソッドを廃止または廃止予定としてマークする方法

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

884
Chris Ballance

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

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

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

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

警告で時代遅れとしてマークするには:

[Obsolete]
private static void SomeMethod()

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

Obsolete warning is shown

そしてIntelliSenseと:

Obsolete warning with IntelliSense

メッセージが欲しいなら:

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

これがIntelliSenseツールチップです。

IntelliSense shows the obsolete message

最後に、使用法にエラーのフラグを立てたい場合は、

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

使用するとこれはあなたが得るものです:

Method usage is displayed as an error

注:メッセージを使用して、代わりに何を使用すべきかを伝えるようにしてください。使用されなくなった理由はありません。

98
mark_h

キーワードObsoleteを使用してメソッドに注釈を追加します。メッセージの引数はオプションですが、なぜそのアイテムが現在時代遅れになっているのか、あるいはその代わりに何を使用するのかを伝えることをお勧めします。
例:

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

ObsoleteAttributeを使えば、廃止予定のメソッドを表示することができます。廃止属性には3つのコンストラクタがあります。

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

enter image description here

24
Sina Lotfi