Я думаю, что то, что вы ищете, называется "инвариантами объекта"
Из руководства, § 2.3
[ContractInvariantMethod]
private void ObjectInvariant ()
{
Contract.Invariant ( this.y >= 0 );
Contract.Invariant ( this.x > this.y );
}
Они будут проверены после каждый открытый вызов метода.
Для правильно инкапсулированных значений, которые должны быть такими же, как перед каждым вызовом.