C#では、次のようにして一部の関数を廃止としてマークできます
[Obsolete]
void Foo()
{}
これは、この関数を使用している場合に警告をスローするようにコンパイラに指示します。
私は独自のタグ [Experimental] を作成したいと考えています。このタグは、コードを作成するユーザーに、この機能が十分にテストされておらず、使用すると問題が発生する可能性があることを伝える警告をスローします。
これを行うことは可能ですか?どのように?
C#では、次のようにして一部の関数を廃止としてマークできます
[Obsolete]
void Foo()
{}
これは、この関数を使用している場合に警告をスローするようにコンパイラに指示します。
私は独自のタグ [Experimental] を作成したいと考えています。このタグは、コードを作成するユーザーに、この機能が十分にテストされておらず、使用すると問題が発生する可能性があることを伝える警告をスローします。
これを行うことは可能ですか?どのように?
コンパイラに警告を生成させるの
[Experimental]
と同じように、独自の属性を作成したいと考えています。[Obsolete]
これを行うことは可能ですか?
いいえ、申し訳ありません。 Obsolete
は非常に特殊な属性です。コンパイラには、専用のコードが書かれています。C# には拡張可能な警告メカニズムはありません。
この提案を Visual Studio チームに送信する場合は、http://visualstudio.uservoice.com/で送信できます。
Obsolete
C# コンパイラが認識しているため、この属性は特別です。自分で作成することはできません。あなたが得ることができる最も近いのはObsoleteAttribute
自分自身から継承することですが、クラスはsealed
そうではありません。
そのまま、メソッドを としてマークできます[Obsolete("This method is not well tested.")]
。それがあなたにできる最善のことです。
PostSharpでできると思います。SO でそれについての投稿がありましたが、今ではブックマーク リンクを持っています。
http://fgheysels.blogspot.com/2008/08/locking-system-with-aspect-directional.html
そのページのCompile Time Validationの下を見ると、作成者がどのようにそれを行ったかがわかります。
さらに注意:配管コードが少し含まれています。間違いなく、「プロジェクトに平手打ち」のさまざまなコードではありません。
属性として追加できます。
[System.AttributeUsage(AttributeTargets.All)]
public class Experimental: System.Attribute
{
}