我的代码中有很多Contract.Assert
个语句。在调试模式下,失败的断言会抛出一个断言失败的对话框。
我有两件事我不明白:
合同是否不受Rewiter控制?所以我想如果不加以检查,那么就不会强制执行合同。如果不是这种情况,运行时检查复选框控制什么?什么不是?
为什么抛出Assertion对话框?它们似乎没用,就像在Silverlight中一样,我得到的是一个IE对话框,说断言失败了。我更喜欢例外。
格雷格
答案 0 :(得分:0)
1 - 合同是合同,他必须完成,尽管如果没有必要使用合同?也许你可以在合同中使用空标签值。 2 - 断言完成此操作,显示开发人员有一些东西要磨损,这主要用于开发环境,当你投入生产时记得在版本中构建以从IL中排除此验证。
答案 1 :(得分:0)
在DEBUG下也启用了Contract.Assert方法,这就是导致失败的原因。在Release下,你不应该看到它。
如果您需要对话框以外的其他内容,则需要启用重写器,或者使用ContractFailed事件处理程序注册处理程序。