这是我的问题。我是合同设计的忠实拥护者,我正在使用这个概念,尤其是在开发可供其他开发人员使用的库时。我刚刚发现了一种新的方法,那就是:Contract.Requires
而不是Exception
:所以而不是:
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
什么都不做,即使name
是null
!
MSDN文档说:
指定封闭方法或属性的前置条件协定。
但如果条件不满足,则不指定任何内容!
我还注意到还有其他 Contract.Requires
重载会引发异常、显示消息……但那是Contract.Requires(Boolean)
为了什么?
下面的编辑答案强调必须安装插件才能拥有Contract
API 的全部功能,但是希望他们的代码在不同平台上表现相同的 Mono 用户呢?