Может ли Visual Studio сказать мне, какая ссылка вызвала исключение NullReferenceException?

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

return Supervisor.RegistrationInformation.Registrations
    .Any(r =>
        r.RegistrationCountry.IsUSAOrCandada() &&
        (!DatesWorked.Start.HasValue || r.RegistrationDate <= DatesWorked.Start.Value) &&
        (!DatesWorked.End.HasValue || r.RegistrationExpirationDate >= DatesWorked.End.Value) &&
        //...

Там много ссылок, и любая из них может быть проблемой. Однако NullReferenceException , похоже, не улавливает, какая ссылка взорвалась.Тот факт, что я передаю лямбду, представляет собой еще одну проблему: насколько я могу судить, я не могу пройти через лямбду во время отладки и увидеть, какие члены r имеют значение NULL.

Можно ли каким-либо образом выполнить одно или оба из следующих действий:

  • Может ли Visual Studio сообщить мне, какая именно ссылка вызвала исключение NullReferenceException ?
  • В противном случае существует ли способ сделать отладчик перебирает лямбда-выражение (или просто наведите указатель мыши на объекты, чтобы увидеть их значения), поскольку оно оценивается с помощью Any ?

Я чувствую, что должен быть способ сделать это, но я могу Кажется, не нашел. Я использую VS2010 Premium, и у меня установлены Resharper, VS Power Tools и несколько других расширений. Если есть надстройка, которая делает это, меня это устроит.

Редактировать:

Как указывает Эрик Липперт, невозможно точно определить источник исключения NR, когда код был скомпилирован в конфигурации выпуска. Я спрашиваю только о работе в режиме отладки. Если Visual Studio (или какое-то расширение VS) может отслеживать источник ссылки во время отладки, это ответит на мой вопрос.

Редактировать 2:

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

10
задан Justin Morgan 9 December 2011 в 04:40
поделиться