【发布时间】:2011-12-01 04:42:54
【问题描述】:
这是我的问题。我是合同设计的忠实拥护者,我正在使用这个概念,尤其是在开发可供其他开发人员使用的库时。我刚刚发现了一种新的方法是: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 文档说:
为封闭方法指定一个前置条件契约或 属性。
但如果条件不满足,则不指定任何内容!
我还注意到other Contract.Requires 重载会引发异常,显示消息...但是Contract.Requires(Boolean) 是干什么用的?
编辑下面的答案强调必须安装插件才能拥有Contract API 的全部功能,但是希望他们的代码在不同平台上表现相同的 Mono 用户呢?
【问题讨论】:
-
感谢您的提示。面对所有这些麻烦,我想我最好还是坚持旧的抛出异常的方式
标签: c# design-by-contract