Можно ли выполнять итерацию коллекции и перечислять только отфильтрованную информацию об объектах при отладке в Visual Studio? Я бы использовал для этого Немедленное окно, но, хотя оно позволяет выполнять методы на объектах, оно, похоже, не позволяет выполнять пользовательские операторы цикла.
Простейший пример в ASP.NET:
this.Page.Validate();
if (!this.Page.IsValid())
{
// breakpoint here
}
Как мы можем выполнить итерацию Page.Validators
коллекции и найти недействительные + вывести их информацию в этой точке останова? (это не главный вопрос, это просто образец)
Если это невозможно сделать прямо, у вас есть какие-то обходные пути для этого? Обходные пути, которые не включают изменение кода, просто написание кода в окне Immediate или некоторое выражение Watch.
При поиске, я нашел только один обходной путь, цитируемый здесь (хотя не смог найти оригинал):
"Добавить метод отладки в ваш код, который
делает что-то вроде перебора
все объекты в коллекции. затем
Вы можете вызвать этот метод из
непосредственное окно в режиме отладки
и будет перечислять разные вещи
для тебя. Думайте об этом как
командная строка, отладчик-помощник. Вы можете
напишите столько, сколько хотите. "
Но это все еще обходной путь. Я представляю, что это должно быть выполнимо без слишком большого взлома и что еще более важно без изменения кода.
Конечно, должно быть возможно сделать какие-то преобразования коллекции в одном выражении.
И давайте придерживаться неуниверсальных коллекций.
Также кажется, что окно Immediate не принимает лямбда-выражения (при попытке получить ошибку: «Выражение не может содержать лямбда-выражения»)