Могут ли кодовые контракты пересекать проблемы кода? - PullRequest
2 голосов
/ 19 августа 2011

Есть ли способ указать требования к контракту кода, которые являются сквозными, например, контракт на уровне класса, требующий, чтобы переменная экземпляра была ненулевой при каждом вызове метода экземпляра в этом классе, или же вызовне удастся?

Я новичок в контрактах на кодирование и просматривал Руководство пользователя по кодовым контрактам от 4 февраля 2011 г. (PDF) и Документы MSDN , но ничего не появляется вя о сквозных чертах.Возможно, я ищу функцию, которой нет в контрактах кода.

1 Ответ

0 голосов
/ 19 августа 2011

Я думаю, что то, что вы ищете, называется "инвариантами объекта"

Из руководства, § 2.3

[ContractInvariantMethod]
private void ObjectInvariant () 
{
   Contract.Invariant ( this.y >= 0 );
   Contract.Invariant ( this.x > this.y );
}

Они будут проверены после каждый открытый вызов метода.
Для правильно инкапсулированных значений, которые должны быть такими же, как перед каждым вызовом.

...