检查.NET中的前提条件

时间:2011-03-07 09:08:50

标签: .net validation code-contracts preconditions

我是“早期失败”策略的粉丝,并希望检查方法params是否具有正确的值。在Java中,我使用Guava

之类的东西
checkArgument(count > 0, "must be positive: %s", count);

.NET有类似的内容吗?

4 个答案:

答案 0 :(得分:7)

您要做的是Design By Contract

您应该使用Code Contracts来定义合同,即C#中类型\方法的前置条件,后置条件和不变量。

IMO代码合同的最佳和最全面的报道是here

答案 1 :(得分:5)

答案 2 :(得分:4)

Code Contracts仍然是标准Visual Studio安装的添加/不添加的一部分,但它们允许您表达前后条件和对象不变量。

有不同的选项可用于将合同强制执行为编译时或运行时检查(或两者)。

答案 3 :(得分: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,您需要使用带有.NET 2.0或更高版本的C#3.0或VB.NET 9.0。