Visual Studio 2010で新しいコード契約を試したいのですが、Visual Studioに追加の拡張機能をインストールしたくありません。私の同僚と共有しています)。 .NET 4.0を対象とすると、新しいSystem.Diagnostics.Contracts名前空間を使用できますが、まだ何もする必要はありません。.NET 4.0のすぐに使用できるコード契約
static void Main(string[] args)
{
Greet(null);
Console.ReadLine();
}
private static void Greet(string name)
{
Contract.Requires(name != null);
Console.Out.WriteLine("Hello {0}", name);
}
プログラムを使用して例えば
は、コンパイルし、実行し、あらゆる種類の警告なし(「こんにちは」を表示します)。 Contract.Requires<ArgumentNullException>(name != null)
を使用しようとすると、名前の値に関係なく、リライタを使用する必要があるというメッセージが表示されます。 コードコントラクトプレミアムをインストールすると、私はどんな種類の魔法をも得ることができますが、そうしないとこの名前空間の目的は何ですか?複雑なコメント以外のものに対してコード契約を使用することはできますか?
同僚に任意の新たな要件を課すことなく先に行くと、拡張機能をインストールし、契約から真のメリットを得ることができますもちろん、コードのデプロイメントを忘れていた*咳*。ありがとう! – Jens
@Jens:「リライタを要求する」とはどういう意味ですか?私はそれがちょうど例外をスローすることを期待しました... –
私は "Contract.Requiresを使用しているときに書き換えを使用する必要があります"というメッセージでアサート失敗を取得しています。 – Jens