При использовании отражения можно получить стек вызовов (кроме того, это может быть грубое приближение из-за JIT-оптимизации) с использованием System.Diagnostics.StackTrace и исследовать содержащиеся объекты StackFrame.
Как получить ссылку на объект (указатель this), над которым выполняется метод в кадре стека?
Я знаю, что могу получить MethodBase, вызвав GetMethod () для объекта стекового фрейма, но я ищу что-то похожее на GetObject () (который, естественно, возвращает null, если метод статический) , Кажется, что объект стекового фрейма может запрашиваться только для статически определенной информации, такой как информация о методе, исходный файл и т. Д.
Отладчик VS знает (хотя он, вероятно, использует другой метод получения трассировки стека вызовов), так как можно дважды щелкнуть любой кадр стека в окне стека вызовов и посмотреть значения локальных и полей классов.
EDIT:
Для уточнения: я хочу объект экземпляр , для которого был вызван метод. Т.е. если метод Foo () вызывается для экземпляра объекта A где-то в стеке вызовов, и он каскадно относится к методу, который я выполняю трассировку стека, я хотел бы получить ссылку на A, откуда я выполняю трассировку стека. (Не объявляемый тип базы метода)