0

我目前正在研究 .NET 框架的代码合同。我想做的是使用这些合同,同时避免我的同事被迫安装 Visual Studio 所需的扩展并继续按原样工作。

Aber 使用合约设置一些方法,并从已执行的应用程序接收消息,说明CONTRACT_FULL已定义符号但未调用重写器。我检查了我的整个项目,这个符号没有在任何地方定义。这个定义来自哪里,我该如何摆脱它?

如果激活合同重写器,此错误会消失,但正如我所说,我想避免安装此重写器的需要。

4

1 回答 1

1

消息的其余部分可能表明您正在使用Contract.Requires< TException >

正如文档所述,您必须在使用Contract.Requires<TException>. 原因是您的代码的执行取决于Contract.Requires<T>如果前置条件失败则抛出预期的异常。

另一方面,Contract.Requires(Boolean)只定义了一个前提条件,并不影响程序的执行。最多,当它的前置条件失败时,它会显示一个烦人的断言消息。在这种情况下不需要重写。

该消息有点误导,因为即使您未启用完整运行时合同检查也会导致错误。

要解决此问题,您必须在所有机器上安装重写器,或切换到使用 Contract.Requires(Boolean)。

于 2013-07-15T13:31:45.390 回答