Вопрос

Я являюсь относительно новым сотрудником в моей нынешней компании, поэтому я все еще "пью из пожарного рукава". с точки зрения изучения моего программного обеспечения и архитектуры. При написании модульных тестов я столкнулся с некоторыми очень большими объектами, скажем, для обсуждения «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 , вероятно, то, что вы хотите использовать. Вы можете искать свойства, используя это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top