假设我有以下代码:
public abstract class TemplateBase {
public void TemplateMethod() {
Operation(); }
protected abstract void Operation(); }
public sealed class Implementation : TemplateBase {
bool _alwaysTrue;
public Implementation(bool alwaysTrue) {
_alwaysTrue = alwaysTrue; }
[ContractInvariantMethod] void ObjectInvariant() {
Contract.Invariant(_alwaysTrue == true); }
protected override void Operation() {
_alwaysTrue = false; } }
[TestClass] public sealed class InvariantTest {
[TestMethod] public void Constructor() {
new Implementation(false); }
[TestMethod] public void Method() {
new Implementation(true).TemplateMethod(); } }
InvariantTest.Constructor 总是因“Invariant failed”异常而失败。
如何根据不变量让 InvariantTest.Method 失败?
我已将运行时检查设置为完全,甚至启用了“调用站点需要检查”,但即使这样也无济于事。