检查.NET中的前提条件

检查.NET中的前提条件,.net,validation,code-contracts,preconditions,.net,Validation,Code Contracts,Preconditions,我是“failearly”策略的粉丝,我想检查方法params是否有正确的值。在Java中,我会使用如下内容: .NET是否也有类似的功能?代码契约:仍然是标准Visual Studio安装的附加组件/不是其一部分,但它们确实允许您表达前置和后置条件以及对象不变量 可以使用不同的选项来强制执行编译时或运行时检查(或两者兼有)。请查看。它允许您以流畅的方式编写前提条件,如下所示: ICollection GetData(int? id, string xml, IEnumerable<int

我是“failearly”策略的粉丝,我想检查方法params是否有正确的值。在Java中,我会使用如下内容:

.NET是否也有类似的功能?

代码契约:

仍然是标准Visual Studio安装的附加组件/不是其一部分,但它们确实允许您表达前置和后置条件以及对象不变量

可以使用不同的选项来强制执行编译时或运行时检查(或两者兼有)。

请查看。它允许您以流畅的方式编写前提条件,如下所示:

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));
}
ICollection GetData(int?id、字符串xml、IEnumerable列)
{
条件.要求(id,“id”)
.IsNotNull()
.IsInRange(1999年)
.IsNotEqualTo(128);
条件.Requires(xml,“xml”)
.StartsWith(“”)
.EndsWith(“”)
.Evaluate(xml.Contains(“abc”)| xml.Contains(“cba”));
条件。要求(列,“列”)
.IsNotNull()
.IsNotEmpty()
.Evaluate(c=>c.Contains(id.Value)| | c.Contains(0));
}
您需要C#3.0或VB.NET 9.0以及.NET 2.0或更高版本来满足尖端条件。

您要做的是

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


IMO代码合同的最佳和最全面的覆盖范围是

+1是“早期失败”策略的粉丝。您需要针对的.NET Framework的最早版本是什么?目标平台是.NET>=3.5。@daemon-我一直沉迷于使用CuttingEdge。条件--NuGet the bad boy and u't Return:)NuGet the bad boy and u't Return:)需要一秒钟的时间,然后开始使用它。走!快点!勾选这个问题,然后去拿它-我=芬博。
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));
}