4

C#では、次のようにして一部の関数を廃止としてマークできます

[Obsolete]
void Foo()
{}

これは、この関数を使用している場合に警告をスローするようにコンパイラに指示します。

私は独自のタグ [Experimental] を作成したいと考えています。このタグは、コードを作成するユーザーに、この機能が十分にテストされておらず、使用すると問題が発生する可能性があることを伝える警告をスローします。

これを行うことは可能ですか?どのように?

4

4 に答える 4

14

コンパイラに警告を生成させるの[Experimental]と同じように、独自の属性を作成したいと考えています。[Obsolete]これを行うことは可能ですか?

いいえ、申し訳ありません。 Obsoleteは非常に特殊な属性です。コンパイラには、専用のコードが書かれています。C# には拡張可能な警告メカニズムはありません。

この提案を Visual Studio チームに送信する場合は、http://visualstudio.uservoice.com/で送信できます。

于 2013-05-10T14:37:36.387 に答える
3

ObsoleteC# コンパイラが認識しているため、この属性は特別です。自分で作成することはできません。あなたが得ることができる最も近いのはObsoleteAttribute自分自身から継承することですが、クラスはsealedそうではありません。

そのまま、メソッドを としてマークできます[Obsolete("This method is not well tested.")]。それがあなたにできる最善のことです。

于 2013-05-10T14:35:28.730 に答える
1

PostSharpでできると思います。SO でそれについての投稿がありましたが、今ではブックマーク リンクを持っています。

http://fgheysels.blogspot.com/2008/08/locking-system-with-aspect-directional.html

そのページのCompile Time Validationの下を見ると、作成者がどのようにそれを行ったかがわかります。

さらに注意:配管コードが少し含まれています。間違いなく、「プロジェクトに平手打ち」のさまざまなコードではありません。

于 2013-05-10T14:36:50.323 に答える
1

属性として追加できます。

[System.AttributeUsage(AttributeTargets.All)]
public class Experimental: System.Attribute
{

}
于 2013-05-10T14:34:50.830 に答える