有没有办法指定交叉的代码契约要求,例如类级别的契约要求在调用该类的任何实例方法时实例变量为非null,否则调用将失败?
我是代码合同的新手,并且一直在浏览Feb 4, 2011 Code Contracts User Manual (PDF)和MSDN docs,但是关于交叉功能的一切都没有突然出现。也许我正在寻找代码合同没有的功能。
答案 0 :(得分:0)
我认为你所寻找的东西被称为“对象不变量”
从手册,§2.3
[ContractInvariantMethod]
private void ObjectInvariant ()
{
Contract.Invariant ( this.y >= 0 );
Contract.Invariant ( this.x > this.y );
}
在每个公共方法调用之后,将检查 对于正确封装的值,应与每次调用之前的值相同。