Использование LINQ в Visual Studio QuickWatch с объектами WCF

#c# #visual-studio #linq #wcf #debugging

#c# #visual-studio #linq #wcf #отладка

Вопрос:

В моем коде я создаю массив объектов. Эти объекты поступают из WCF.

 var people = GetPeopleFromWCF().ToArray();
  

Я устанавливаю точку останова после назначения массива, запускаю отладчик, код приостанавливается в соответствующей точке останова. Я захожу в окно QuickWatch и могу открыть свойства объектов массива. Когда я использую некоторые методы LINQ в окне QuickWatch, например

people.Select(x => x.DateOfBirth), results

или people.Select(x => x.DateOfBirth).ToList()

или people.Select(x => x.DateOfBirth).ToArray()

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

Оценка метода System.Linq.SystemCore_EnumerableDebugView`1[Система.DateTime].get_Items() вызывает собственный метод Microsoft.Win32.SafeNativeMethods.QueryPerformanceCounter (длинный amp;). Оценка собственных методов в этом контексте не поддерживается.

Когда я набираю в окне QuickWatch people.First().DateOfBirth — я получил правильный результат.

Я использую Microsoft Visual Studio Enterprise 2019 версии 16.7.3.

Что я делаю не так?

Комментарии:

1. 16.7.3 — это текущая версия VS 2019.

2. Как насчет того, чтобы попробовать с ToList() подобным people.Select(x => x.DateOfBirth).ToList() ?

3. Селим Йилдиз, тот же результат.

4. Я предлагаю вам сделать это с помощью Immediate Window и посмотреть, есть ли другие результаты.

5. похоже, проблема в том, как VS обрабатывает DebuggerBrowsableAttribute коллекцию ваших конкретных объектов (похоже, что WCF вносит свой вклад в проблему). Я знаю, что несколько похожая проблема была исправлена ранее, так что вам, возможно, повезет сообщить об этом команде разработчиков VS