這是我的問題。我是合約設計的忠實粉絲,我正在使用這個概念,特別是在開發可供其他開發人員使用的庫時。我只是發現了這樣的一種新的方式是:Contract.Requires
,而不是Exception
: 因此,而不是具有:Contract.Requires usage
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文件說:
指定外層方法或 財產的前提條件的合同。
但沒有指定條件不滿足的情況!
我也注意到有otherContract.Requires
重載,拋出異常,顯示消息...但那麼什麼是Contract.Requires(Boolean)
?下面
編輯解答強調,插件必須安裝有Contract
API的全功率但後來怎麼樣誰希望自己的代碼有同樣的表現在不同平臺上的用戶單?
您可能會覺得這很有用:http://stackoverflow.com/questions/6483055/code-contracts-for-mono –
感謝您的提示。有了這一切麻煩,我認爲我最好不得不堅持舊的方式拋出異常 – GETah