Contract.Requires usage

Вот моя проблема. Я очень большой поклонник Дизайна по контракту, я использую эту концепцию, особенно при разработке библиотек, которые могут использоваться другими разработчиками. Я только что обнаружил новый способ сделать это: Contract.Requires вместо Exception : Итак, вместо:

public void SomeMethod(string name){
   if(name==null) throw new NullArgumentException("Null values not supported");
} 

у меня теперь есть:

public void SomeMethod(string name){
   Contract.Requires(name != null);
}

РЕДАКТИРОВАТЬ : я работаю под VS2010 в режиме отладки.

Проблема: Contract.Requires ничего не делает, даже если name равно null !

В документации MSDN говорится:

Задает контракт предварительного условия для включающего метода или свойства .

Но ничего не указано в случае невыполнения условия!

Я также заметил, что существуют другие Contract.Requires перегрузки, которые вызывают исключение, отображают сообщение ... но тогда что такое Contract.Requires (Boolean) для?

РЕДАКТИРОВАТЬ В приведенном ниже ответе подчеркивается, что для использования всех возможностей Contract API необходимо установить подключаемый модуль, но как насчет пользователей Mono, которые хотят, чтобы их код вел себя одинаково на разных платформах?

41
задан GETah 30 November 2011 в 20:42
поделиться