& # 8220; & # Поиск 8221; члены объекта в отладчике JIT .NET
-
07-07-2019 - |
Вопрос
Я являюсь относительно новым сотрудником в моей нынешней компании, поэтому я все еще "пью из пожарного рукава". с точки зрения изучения моего программного обеспечения и архитектуры. При написании модульных тестов я столкнулся с некоторыми очень большими объектами, скажем, для обсуждения «SavedOrder», и мне нужно найти, где найти конкретный фрагмент данных, который я ищу.
У меня проблема в том, что я знаю, что у каждого SavedOrder есть где-то во внутренностях его наследства и члены (у которых есть члены, у которых есть члены, и так далее, и так далее), часть данных, которую я ищу.
Пока что я бездумно расширяю свои часы и слоняюсь по предметам, чтобы, надеюсь, найти то, что я ищу. Кто-нибудь знает плагин / технику, чтобы использовать, чтобы найти, есть ли у этого объекта что-то типа "A"? или что-то со значением "SomeEnum.SomeValue"?
РЕДАКТИРОВАТЬ: Все хорошие входные данные, пока ничего, что полностью решает мою цель. Браузеры объектов (Object Browser и Reflector) хорошо просматривают элементы каждого объекта, но в целях связывания точки A с точкой D они действительно просто помогают привести точку A к точке B или D к C. р>
Я предполагаю, что псевдо-c # рекурсивный алгоритм, который лучше всего описал бы решение, был бы:
WheresWaldo FindMember(Object o)
{
foreach(PublicMember member in o)
{
if(o.IsType(MyType))
return Success!;
else
return WheresWaldo(member);
}
}
Кто знает, возможно не возможно.
Решение
Я не уверен, что полностью следую за вами, но, возможно, вы могли бы использовать условную точку останова. Установите точку останова на соответствующем коде, щелкните правой кнопкой мыши и выберите условную точку останова. Отсюда вы можете написать фрагмент кода, который будет оцениваться каждый раз при оценке точки останова. Таким образом, вы можете указать, чтобы остановить только при выполнении условия. Р>
РЕДАКТИРОВАТЬ: Исходя из ваших комментариев, я бы сказал, что Reflector может быть полезным. Он имеет возможность поиска определенных типов или членов. Запустите Reflector с соответствующими сборками. Нажмите F3 для поиска и выберите Ctrl-M для членов и введите имя члена, которого вы ищете. Вы можете включить / выключить точное совпадение, чтобы помочь вам с поиском. Р>
Другие советы
ObjectBrowser , вероятно, то, что вы хотите использовать. Вы можете искать свойства, используя это.