Всего переписать, основываясь на комментариях до сих пор
Я создал проект библиотеки классов и поместил туда интерфейс и класс контракта. Я установил для него значение «Требуется стандартный контракт», проверки до и после выполнения и справочную сборку контракта сборки (я установил идентичные параметры для отладки и выпуска).
Затем я получил консольное приложение с классом, реализующим интерфейс, и установил «Стандартные условия контракта», проверки до и после выполнения (опять же, одинаково между Debug и Release).
При запуске в режиме отладки или выпуска, я получаю ArgumentOutOfRangeException
при попытке вызвать getArticleNSheet
.
С очевидным исключением переключения на "Требуется стандартный контракт", что в приведенном выше не соответствует вашей текущей настройке?
И, фактически, я ошибался ранее. С помощью «Требуется стандартный контракт» я на самом деле могу достичь точки останова в классе контракта при отладке. Я не уверен, каким Wizardry он способен это сделать - поскольку он не выполняет буквально код в этом классе - о чем свидетельствует тот факт, что вы можете переписать метод в классе контракта следующим образом:
int IArticleBLL.getArticleNSheet(string IdBox)
{
Contract.Requires<ArgumentOutOfRangeException>(!String.IsNullOrEmpty(IdBox), "IdBox has no valid value");
throw new NotImplementedException();
}
Вы можете поместить точку останова в строку Contract.Requires
, и она, кажется, достигает ее (после предупреждения о несоответствии файлов, возможно, из-за перезаписи). Но при условии, что вы передали непустую строку, она не выдаст NotImplementedException
.