Прежде всего, то, что вы описываете, является плохой практикой программирования.Поведение метода должно зависеть от аргумента , а не от того, кто его вызвал .Метод должен быть надежным, чтобы вы знали, что вы получаете одно и то же поведение независимо от того, кто его вызвал.
Во-вторых, вы, похоже, придерживаетесь общего, но ложного убеждения, что стек вызовов - это реальная вещь, которая сообщает вам, откуда поступил звонок .Это совсем не цель стека вызовов, хотя для сценариев отладки это, безусловно, полезно.Цель стека вызовов - сообщить вам , куда вы идете дальше , а не , откуда вы пришли .Так вот, обычно это тот случай, когда вы идете дальше, также откуда вы пришли.Тот факт, что вы часто можете определить, откуда вы пришли, основываясь на знании того, куда вы идете дальше, часто полезен, но вы не можете полагаться на него.Разрешено, чтобы в стеке вызовов содержалось только информации, достаточной для определения того, куда вы собираетесь двигаться дальше;он может отбрасывать каждый бит информации, необязательный для определения того, куда вы идете дальше.
В-третьих, вы, похоже, придерживаетесь общего, но ложного убеждения, что стеки вызовов являются единственной системой для определения того, куда вы идете дальше.и, следовательно, откуда вы пришли.Они не.Как мы увидим в следующей версии C # и VB, асинхронное управление полностью разводится «откуда вы пришли», «откуда вы идете дальше» и вообще не использует стеки вызовов.
Возможно, вы можете сказать нам , почему вам нужна эта информация.Вероятно, есть лучший способ сделать то, что вы хотите.