可能重复:
How can I find the method that called the current method?
您好, 如何从方法中确定方法的调用者?例如:
SomeNamespace.SomeClass.SomeMethod() {
OtherClass();
}
OtherClass() {
// Here I would like to able to know that the caller is SomeNamespace.SomeClass.SomeMethod
}
由于
答案 0 :(得分:6)
这些文章应该有所帮助:
基本上代码如下:
StackFrame frame = new StackFrame(1);
MethodBase method = frame.GetMethod();
message = String.Format("{0}.{1} : {2}",
method.DeclaringType.FullName, method.Name, message);
Console.WriteLine(message);
答案 1 :(得分:1)
您需要使用StackTrace类
来自MSDN的小部件
// skip the current frame, load source information if available
StackTrace st = new StackTrace(new StackFrame(1, true))
Console.WriteLine(" Stack trace built with next level frame: {0}",
st.ToString());
答案 2 :(得分:1)
您可以使用System.Diagnostics.StackTrace类:
StackTrace stackTrace = new StackTrace(); // get call stack
StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames)
// write call stack method names
foreach (StackFrame stackFrame in stackFrames)
{
Console.WriteLine(stackFrame.GetMethod().Name); // write method name
}