查找函数Invoker

时间:2011-06-29 06:06:33

标签: c#

我有这样的C#功能:

private void test(){}

有没有办法找到一个函数的Invoker或调用者?
例如:

private void Caller(){
test();
}

然后我如何理解调用者调用了测试?

4 个答案:

答案 0 :(得分:5)

答案 1 :(得分:2)

您可以从调用堆栈中获取方法的名称。

当你调用一个函数时,该名称也会被推送到调用堆栈,因此程序知道如何从该函数调用返回。您可以使用该信息来获取调用test()函数的上一个函数。

要获得堆栈跟踪,您可以使用以下命令:

StackTrace stackTrace = new StackTrace();
StackFrame[] stackFrames = stackTrace.GetFrames();

Console.WriteLine(stackFrames[1].GetMethod().Name);    

答案 2 :(得分:1)

在调用者中使用一个参数,当你从另一个函数调用另一个函数调用另一个函数使用test(2)

时,调用test.like时调用test。

答案 3 :(得分:1)

您可以使用字符串参数进行测试,

private void test(string whoCalled){}

如果和在Caller中,

private void Caller() {
    test("Caller");
}