Вот моя проблема. Я очень большой поклонник дизайна по контракту, я использую эту концепцию, особенно при разработке библиотек, которые могут быть использованы другими разработчиками. Я только что нашел новый способ сделать это: 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);
}
EDIT : я работаю в VS2010 в режиме отладки.
Проблема: Contract.Requires
ничего не делает, даже если name
равно null
!
Документация MSDN гласит:
Указывает предварительное условие для метода включения или
свойство.
Но ничего не указано, если условие не выполняется!
Я также заметил, что есть другие Contract.Requires
перегрузки, которые выдают исключение, выводят сообщение ... но тогда зачем нужен Contract.Requires(Boolean)
? 1032 *
РЕДАКТИРОВАТЬ Ответ ниже подчеркнул, что необходимо установить плагин, чтобы иметь полную мощность API Contract
, но как насчет пользователей Mono, которые хотят, чтобы их код работал одинаково на разных платформах?