c# – Contract.Requires用法

这是我的问题。我是合同设计的一个非常大的粉丝,我使用这个概念,特别是当开发可以被其他开发人员使用的库。我刚刚发现了一个新的方法,这是:Contract.Requires而不是异常:
所以,而不是:

public void SomeMethod(string name){
   if(name==null) throw new NullArgumentException("Null values not supported");
} 

我现在有:

public void SomeMethod(string name){
   Contract.Requires(name != null);
}

编辑:我在调试模式下VS2010下工作。

问题:Contract.Requires不执行任何操作,即使名称为null!

MSDN文档说:

Specifies a precondition contract for the enclosing method or
property.

但没有指定条件不满足的情况下!

我也注意到有other Contract.Requires重载,抛出异常,显示消息…但是什么是Contract.Requires(布尔)为?

编辑下面的答案突出显示,必须安装一个插件以具有Contract API的全部功能,但是Mono用户想要他们的代码在不同的平台上表现相同吗?

您应该执行以下操作:

>安装代码合同加载项作为nfechner已经注意到
>转到项目属性,’代码合同’文件夹
>检查“执行运行时合同检查”
>将“装配模式”切换到“标准合同要求”
>用Contract.Requires替换你的Contract.Requires< SomeException> (第一个抛出System.Diagnostics.ContractException,而第二个抛出您指定的对公共方法很重要的异常)

这是基本设置。对于更精确的配置,refer to the manual

如果你使用Mono,大概,Contract类是空的。我没有这样做,但第七章从合同手册似乎解释如何提供自己的实现。

http://stackoverflow.com/questions/8300815/contract-requires-usage

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – Contract.Requires用法