Прямо сейчас я смотрю на ошибку в некотором коде C #, где мне нужно получить данный экземпляр объекта в каком-то месте. Я сижу на точке останова в этом месте в отладчике и могу перепрыгнуть обратно в стек и посмотреть экземпляр объекта, который мне нужно получить. Я подозреваю, что есть способ получить этот экземпляр из того, что у меня есть (foo.bar.baz.bla.bla.bla
или что-то в этом роде), но я недостаточно разбираюсь в коде, чтобы знать, как его найти.
Гипотетический пример:
Я сижу в отладчике в строке 2485, где кто-то упрощает код, и понимаю, что программе необходимо прямо здесь установить свойство FooBat
для включающего объекта WizBang
(то, что выполняет функция 27 шагов) был вызван стек вызовов), но у меня нет прямых ссылок на включающий объект WizBang
. Однако я подозреваю, что один из других объектов, к которым у меня есть доступ, имеет доступ к чему-то, что имеет доступ к чему-то, что имеет доступ к включающему объекту WizBang
. Но это дает мне около 10 тысяч вещей для просмотра, и, кстати, я также могу получить доступ к 42 различным WizBang
объектам, которые мне не нужны, поэтому мне также нужно проверить, что это действительно тот же объект, что и тот, 27 шагов вверх по стеку. Если я могу просто найти способ получить к нему доступ, я могу добавить SomeExp.FooBat = true;
прямо здесь, в строке 2485, и закрыть эту ошибку!
Мой вопрос: кто-нибудь создал инструмент, который использует отражение и силу вербовки для поиска цепочек свойств и членов, чтобы найти тот, который даст желаемый экземпляр объекта?
Да, я знаю, что это проблема O(b
d
)
и часто не работает, но это время компьютера, а не время программиста, и когда это работает, это было бы здорово!
p.s. Я даю ему менее чем даже нечетное из того, что я хочу существовать (сейчас <g/>
).