0

我的代码中有许多Contract.Assert语句。在调试模式下,失败的断言会引发断言失败对话框。

对此我有两点不明白:

  1. 合同不受 Rewiter 控制吗?所以我想如果不检查它,就不会执行任何合同。如果不是这种情况,运行时检查复选框控制的是什么?什么不是?

  2. 为什么会抛出断言对话框?它们似乎有点没用,就像在 Silverlight 中一样,我得到的只是一个 IE 对话框,说断言失败。我宁愿有个例外。

格雷格

4

2 回答 2

0

1 - 合同就是合同,他必须完成,尽管如果没有必要,为什么要使用合同?也许您可以在合同中使用空标签值。2 - 断言确实这样做,向开发人员显示有什么东西要磨损了,这主要用于开发环境,当你投入生产时记得构建发布以从 IL 中排除此验证。

于 2013-09-27T00:57:01.750 回答
0

在 DEBUG 下也启用了 Contract.Assert 方法,这就是您失败的原因。在 Release 下,您应该看不到它。

如果您想要对话框以外的内容,则需要启用重写器,或者使用 ContractFailed 事件处理程序注册处理程序。

于 2013-09-27T19:08:54.070 回答