Лучший способ устранения неполадок параметров, вызывающих ошибки C # - PullRequest
0 голосов
/ 24 апреля 2018

Я получаю сообщение об ошибке при попытке вызвать следующую процедуру:

ApplyVoucherNumberToBillingCharges(practiceID,
                                  Convert.ToInt32(rdoVoucherNumberAppliesTo.SelectedValue), 
                                  VoucherNumber, 
                                  VoucherNumberID,
                                  Convert.ToInt32(hdRoundingRecordId.Value),
                                  ChargeID,
                                  hdGenerateVoucherNumberChargeList.Value,
                                  Convert.ToDateTime(txtFromDate.Text),
                                  Convert.ToDateTime(txtToDate.Text),
                                  Convert.ToDateTime(txtPostingDate.Text),
                                  Convert.ToInt32(ddlVisitType.SelectedValue),
                                  SelectVisitProvider.SelectedID,
                                  SelectVisitLocation.SelectedID,
                                  chkOverwriteVoucherNumber.Checked);

Я получаю следующую ошибку:

входная строка не была вправильный формат c #

Я знаю, что это как-то связано с классом convert, потому что я получал ту же ошибку при вызове другого метода ранее.Разница в том, что тогда был только один параметр, использующий класс Convert, а сейчас их несколько.

Сообщение об ошибке не так наглядно, как хотелось бы, и не дает много подсказок относительно того, где именно это

Помимо того, что вы закомментируете и жестко закодируете значение для каждого из параметров, которые делают это, и посмотрите, какой из них вызывает проблему, есть ли лучший способ определить, в чем проблема?

Мне бы очень хотелось знать, потому что мой проект иногда занимает несколько минут (я знаю, это нелепо, я пытался все исправить, но ничего не работает), и поэтому отладка этой небольшой проблемы может занять вечность.

Спасибо за любую помощь, которую вы можете предоставить.

1 Ответ

0 голосов
/ 24 апреля 2018

Выложенный вами фрагмент кода является эквивалентом готового предложения.Вы выполняете слишком много операций в одной строке кода.Это делает ваш код трудным для чтения и, как вы обнаружили, трудным для отладки.

В качестве отправной точки присвойте результаты ваших вызовов Convert переменным, а затем передайте их в метод:

var convertedVoucherNumberAppliesTo = Convert.ToInt32(rdoVoucherNumberAppliesTo.SelectedValue);
//other conversions here
ApplyVoucherNumberToBillingCharges(practiceId, convertedVoucherNumberAppliesTo, \\ pass in other variables here...);

Таким образом, вы сможете быстро определить, какая конверсия не удалась, поскольку каждая потенциальная ошибка будет в конкретной строке.

Что касается вашего проекта, который занимает минуты для сборки, в зависимости отразмер проекта, это может быть нормальным.Например, в настоящее время я пишу этот ответ, ожидая завершения 20-минутного сеанса сборки и тестирования на нашем CI-сервере - сборка занимает половину этого времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...