3

特別な状況で開発者のみが使用する関数があります。

残念ながら、公開/非公開の設定はあまり役に立ちません。多くの場合、使用のために可視化する必要があるからです。

xmldocs で関数を文書化して開発者に警告を出しましたが、コンパイラの警告を出力することは可能ですか? おそらく、関数を古いものとしてマークするのと同様に、属性を使用していますか?

または、誰かが危険なメソッドから人々を遠ざけるための有用なアーキテクチャ上のアドバイスを持っている場合 (これはおそらく別の名前空間、継承などになると思いますか?)


追加の詳細

答えてくれてありがとう、私からのたくさんの1 + :-)

また、質問を明確にするのにも役立ちました。

[Obsolete("my message")] は、メソッドが実際に使用されている場合にのみ警告を表示するため、いくつかの点で #warning よりも優れています。ただし、ChrisF が指摘しているように、実際には廃止されたメソッドではないため、実際には正確ではありません。

[Obsolete("my message")] の機能の間に中間点はありますが、意味はありませんか?

4

5 に答える 5

3

使用できます#warning ...

詳細については、http://msdn.microsoft.com/en-us/library/963th5x3 (v=vs.100).aspx を参照してください。

于 2012-07-31T11:16:17.013 に答える
3

Visual Studio では、このようなエラーと警告をスローできます。

#warning This line is a compiled warning

条件付きで実行できるかどうかはわかりませんが、コンパイル時に警告がスローされます。

于 2012-07-31T11:16:31.480 に答える
1

Obsolete属性を使用します。

[Obsolete("Please don't use this")]
public void DodgyMethod()
{
}

メソッドを呼び出そうとするコードは、コンパイラに警告を発行させます。

技術的には古い方法ではありませんが、効果は同じです。

于 2012-07-31T11:16:53.873 に答える
1

[Obsolete("Don't use this outside of whatever")]メソッドに追加する必要があります。

于 2012-07-31T11:16:59.100 に答える
1

これを解決する最善の方法は、小さな Roslyn Analyzer を作成し、それをライブラリと共に出荷することだと思います。そうすれば、カスタム コード インスペクションを生成でき、開発者は Suppress 属性を使用して適切な理由で警告を抑制することもできます。

例は、https ://msdn.microsoft.com/magazine/dn879356.aspx にあります。

于 2018-03-08T17:08:51.537 に答える