为什么 Contract.Assert 会抛出断言对话框,即使运行时检查处于关闭状态

本文关键字:运行时 检查 状态 于关闭 对话框 Assert Contract 断言 为什么 | 更新日期: 2023-09-27 18:33:08

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

对此

,有两点我不明白:

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

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

格雷格

为什么 Contract.Assert 会抛出断言对话框,即使运行时检查处于关闭状态

Contract.Assert 方法也在 DEBUG 下启用,这就是失败的原因。在"发布"下,不应看到它。

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

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