7
  • Я использую Code Contracts версии: 1.4.40602.0
  • Я скопировал необходимое содержание и трансформирует файлы
  • SandCastle выводит исключения, основанные на моих требований контракта

Пример кода:Кодовые контракты + Sandcastle - Любой способ настроить раздел исключений?

public class MyClass 
{ 
    public MyClass(Object obj) 
    { 
     Contract.Requires<ArgumentNullException>(obj != null); 
    } 
} 

Итоговый результат (в моей документации):

| Exception      | Condition      | 
|---------------------------------|---------------------------------| 
| System.ArgumentNullException | obj == null      | 

Это не , что плохой, однако мне интересно, есть ли способ настроить текст условия? Я попытался добавить сообщение пользователя Contract.Requires<ArgumentNullException>(obj != null, "obj is null.");, однако это ничего не решило.

В прошлом мне пришлось написать свой собственный раздел документации xml для исключений. Должен ли я снова сделать это, чтобы получить то, что мне нужно?


Отказ от ответственности: Поскольку контракты кода (в настоящее время) проект DevLabs, это может измениться, но мне интересно, если сейчас это уже есть ... если нет, то я буду уверен предложить это.

ответ

3

с контрактами кода 1.4.51019.0 вы можете использовать перегрузку:

Requires<TException>(bool condition, string userMessage)

Однако, Ваше сообщение будет добавлено после «Precondition Failed», а затем несогласованной условия. Если Sandcastle не узнает его, я считаю, что это не ошибка в Code Contracts, так как сообщение мне кажется правильным.