【问题标题】:Why does Contract.Assert throw an assertion dialog even when Runtime Checking is Off?为什么即使运行时检查关闭,Contract.Assert 也会抛出断言对话框?
【发布时间】:2013-09-28 03:08:54
【问题描述】:

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

对此我有两点不明白:

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

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

格雷格

【问题讨论】:

    标签: c# code-contracts


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-04-05
        • 2018-06-23
        • 2021-06-19
        • 1970-01-01
        • 2019-11-02
        • 1970-01-01
        • 2012-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多