Gerade für's Tracing / Logging ist man darauf angewiesen, zur Laufzeit Informationen darüber zu erhalten, wo man sich im Code gerade befindet - und zwar nicht nur wenn eine Exception geworfen wird.

Klassenname, Methodenname und ähnliches kriegt man ja problemlos über Reflection:

   1:  string method = System.Reflection.MethodInfo.GetCurrentMethod().Name;

Meist reicht dies - nützlicher wäre es allerdings, wenn man auch noch gleich die Zeilennummer erhalten könnte. Die Klasse StackFrame aus dem System.Diagnostics-Namespace bietet hierfür die nötigen Mittel: 

   1:  StackFrame sf = new StackFrame( 1, true ); 
   2:  string methodName = sf.GetMethod().ToString(); 
   3:  string fileName = sf.GetFileName(); 
   4:  int lineNumber = sf.GetFileLineNumber();

In diesem Beispiel werden die Informationen aus dem letzten Stack-Eintrag ausgelesen (daher das 1 im Constructor). Das heisst, man erhält die Informationen über die Zeile, die die aktuelle Methode aufgerufen hat. Um die Informationen zum aktuellen Stack-Eintrag zu erhalten, initialisiert man die StackFrame-Klasse einfach mit 0.