Здравствуйте, SergeyT., Вы писали:
...
ST>В принципе, в тех же дот-нетах, контракты можно определить и более формально:
ST>[ContractClass(typeof(LockerContracts))] // указываем контракт
ST>public interface Locker {
...
ST>internal abstract class LockerContracts : Locker
...
ST>
ST>Теперь можно на это дело натравить статический анализатор, который еще и во время компиляции (точнее посткомпиляции) сможет отловить проблемы.
Здорово, но работает начиная с framework4
http://msdn.microsoft.com/en-us/library/system.diagnostics.contracts.contract.aspx