我有这样的C#功能:
private void test(){}
有没有办法找到一个函数的Invoker或调用者?
例如:
private void Caller(){
test();
}
然后我如何理解调用者调用了测试?
答案 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");
}