C#方法来电

可能重复:
如何找到调用当前方法的方法?

嗨,我如何从方法中确定方法的调用者? 例如:

SomeNamespace.SomeClass.SomeMethod() { OtherClass(); } OtherClass() { // Here I would like to able to know that the caller is SomeNamespace.SomeClass.SomeMethod } 

谢谢

这些文章应该有所帮助:

  1. http://iridescence.no/post/GettingtheCurrentStackTrace.aspx
  2. http://blogs.msdn.com/jmstall/archive/2005/03/20/399287.aspx

基本上代码看起来像这样:

 StackFrame frame = new StackFrame(1); MethodBase method = frame.GetMethod(); message = String.Format("{0}.{1} : {2}", method.DeclaringType.FullName, method.Name, message); Console.WriteLine(message); 

您需要使用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()); 

您可以使用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 }