C#方法来电

时间:2009-07-22 06:44:36

标签: c# .net

  

可能重复:
  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
}

由于

3 个答案:

答案 0 :(得分:6)

这些文章应该有所帮助:

  1. http://iridescence.no/post/GettingtheCurrentStackTrace.aspx
  2. http://blogs.msdn.com/jmstall/archive/2005/03/20/399287.aspx
  3. 基本上代码如下:

    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
  }