Получите имя функции Вызова от Вызванной функции [дубликат]

Я имею к второму (треть? четвертый?) Погружение В Python . Это является просто большим для справочника и чтения. Как добавленное предложение, прочитанное некоторый код! Это всегда помогает.

36
задан Community 23 May 2017 в 12:09
поделиться

2 ответа

new StackFrame(1, true).GetMethod().Name

Обратите внимание, что в сборках выпуска компилятор может встроить вызываемый метод, и в этом случае приведенный выше код вернет вызывающего абонента, поэтому для безопасности вы должны украсить свой метод:

[MethodImpl(MethodImplOptions.NoInlining)]
75
ответ дан 27 November 2019 в 05:29
поделиться

Это даст вам имя метода, в котором вы находитесь:

string currentMethod = System.Reflection.MethodBase.GetCurrentMethod().Name;

Используйте с осторожностью, поскольку могло произойти снижение производительности.

To get callers:
StackTrace trace = new StackTrace();
int caller = 1;

StackFrame frame = trace.GetFrame(caller);

string callerName = frame.GetMethod().Name;

Для получения имени метода используется обход стека. Значение вызывающего абонента - это то, насколько далеко нужно подняться в стеке вызовов. Будьте осторожны, не заходите слишком далеко.

14
ответ дан 27 November 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: