12

私は「早期に失敗する」戦略のファンであり、たとえばメソッドパラメータが正しい値を持っていることを確認したいと思います。JavaではGuavaのようなものを使用します:

checkArgument(count > 0, "must be positive: %s", count);

.NETに似たものはありますか?

4

4 に答える 4

7

あなたがしたいのは契約による設計です。

コントラクトを定義するには、コードコントラクトを使用する必要があります。つまり、C#のtypes \ methodsの前提条件、事後条件、および不変条件です。

IMOは、コード契約の最良かつ最も包括的なカバレッジがここにあります。

于 2011-03-07T09:43:33.107 に答える
5

コード契約: http: //msdn.microsoft.com/en-us/devlabs/dd491992

于 2011-03-07T09:10:39.277 に答える
4

コードコントラクトは、標準のVisual Studioインストールのアドオン/一部ではありませんが、前後の条件とオブジェクトの不変条件を表現できます。

コンパイル時または実行時のチェック(あるいはその両方)としてコントラクトを適用するために、さまざまなオプションを使用できます。

于 2011-03-07T09:11:39.657 に答える
1

CuttingEdge.Conditionsをご覧ください。これにより、次のように、流暢な方法で前提条件を記述できます。

ICollection GetData(int? id, string xml, IEnumerable<int> col)
{
    Condition.Requires(id, "id")
        .IsNotNull()
        .IsInRange(1, 999)
        .IsNotEqualTo(128);

    Condition.Requires(xml, "xml")
        .StartsWith("<data>")
        .EndsWith("</data>")
        .Evaluate(xml.Contains("abc") || xml.Contains("cba"));

    Condition.Requires(col, "col")
        .IsNotNull()
        .IsNotEmpty()
        .Evaluate(c => c.Contains(id.Value) || c.Contains(0));
}

CuttingEdge.Conditionsには、C#3.0またはVB.NET9.0と.NET2.0以降が必要です。

于 2011-03-07T09:37:26.817 に答える