Я использую простую инструкцию Debug.Assert для предусловий и постусловий и вручную пишу bool Invariant()
функцию, которую я называю Debug.Assert(Invariant())
при входе и выходе соответствующих / нетривиальных открытых методов.Это ручная работа, хорошо, но это очень легко, и вы быстро привыкаете к этому.Кроме того, это позволяет мне очень близко следовать дизайну Эйфеля в соответствии с контрактной философией.