class Caller { public Caller() { } public void CallIt() { Tracer.ShowCallerInfo("Called by Caller object"); } } class Tracer { public static void ShowCallerInfo(string remark) { Console.Write(new string('=', 80)); Console.WriteLine("Caller Remark: {0}", remark); StackTrace st = new StackTrace(true); StackFrame sf = st.GetFrame(1); MethodBase mb = sf.GetMethod(); Console.WriteLine("Caller Module: {0}",mb.Module.FullyQualifiedName); Console.WriteLine("Caller Class & Method: {0}.{1}()", mb.ReflectedType.FullName, mb.Name); Console.WriteLine("File Info: Line {0} in {1}", sf.GetFileLineNumber(), sf.GetFileName()); Console.WriteLine(); } } |