2013-09-27 1 views
0

В моем коде есть несколько операторов Contract.Assert. Когда в режиме отладки, утверждения, которые выходят из строя, вызывают диалог с ошибкой утверждения.Почему Contract.Assert выдает диалог подтверждения, даже если Runtime Checking выключен?

Есть две вещи, которые я не понимаю об этом:

  1. контракты не контролируются Rewiter? Поэтому я подумал, что если это не будет проверено, то никаких контрактов не будет. Если это не так, то что контролируется флажком проверки выполнения? Что не является?

  2. Почему открывается диалоговое окно утверждения? Они кажутся бесполезными, как в Silverlight, все, что я получаю, это диалоговое окно IE, в котором говорится, что утверждение не сработало. Я предпочел бы исключение.

Грег

ответ

0

Метод Contract.Assert также включен в DEBUG, поэтому вы получаете отказ. В разделе Release вы не должны видеть это.

Если вы хотите что-то другое, кроме диалога, вам нужно либо включить перезаписывающий, либо зарегистрировать обработчик с обработчиком событий ContractFailed.

0

1 - Контракт является контракт, он должен быть выполнен, хотя, если подмигнули нет необходимости зачем использовать контракт? Возможно, вы могли бы использовать значения нулевой метки в контракте. 2 - Утверждение делать именно это, показать разработчику, что-то происходит, это в основном используется в среде разработки, когда вы добавляете в производство, помните, чтобы строить в выпуске, чтобы исключить эту проверку с IL.

Смежные вопросы