0

我正在使用带有代码合同的 VS2010 Ultimate。在得到意外的运行时行为后,我查看了反射器中的源代码,并意识到我的不变量没有被编译。生成的__ContractsRuntime类仅包含AssertEnsuresReportFailureRequires<TException>的定义TriggerFailure。对于我的所有子句,我对每种类型都使用[ContractInvariantMethodAttribute]了一个私有方法。Contract.Invariant(...)我对配置为装配模式的“标准合同要求”进行了完整的合同检查。

我的程序集文件包含以下程序集属性:

[assembly: RuntimeContracts(RuntimeContractsFlags.InheritContracts | RuntimeContractsFlags.StandardMode | RuntimeContractsFlags.ThrowOnFailure | RuntimeContractsFlags.Assumes | RuntimeContractsFlags.Asserts | RuntimeContractsFlags.Invariants | RuntimeContractsFlags.Ensures | RuntimeContractsFlags.Requires | RuntimeContractsFlags.RequiresWithException | RuntimeContractsFlags.LegacyRequires)]`

有没有人有这个问题或任何见解为什么我的不变量没有按预期工作?

4

0 回答 0