Berücksichtigt, dass die Debug-Datendatei verfügbar ist (PDB) und entweder System.Reflection oder ein anderes ähnliches Framework wie Mono.Cecil, wie programmgesteuert den Quelldateinamen und die Zeilennummer, wo ein Typ oder Ein Member eines Typs wird deklariert.Wie erhält man den Quelldateinamen und die Zeilennummer eines Typmembers?
Zum Beispiel, sagen wir, Sie diese Datei in eine Assembly kompiliert haben:
C: \ MyProject \ Foo.cs
1: public class Foo
2: {
3: public string SayHello()
4: {
5: return "Hello";
6: }
7: }
Wie aus wie etwas tun:
MethodInfo methodInfo = typeof(Foo).GetMethod("SayHello");
string sourceFileName = methodInfo.GetSourceFile(); // ?? Does not exist!
int sourceLineNumber = methodInfo.GetLineNumber(); // ?? Does not exist!
sourceFileName würde "C: \ MyProject \ Foo.cs" und sourceLineNumber gleich 3 enthalten.
Update: System.Diagnostics.StackFrame
ist in der Tat in der Lage, diese Informationen zu erhalten, aber nur im Rahmen der aktuellen Ausführung von Call-Stack. Dies bedeutet, dass die Methode zuerst aufgerufen werden muss. Ich möchte die gleichen Informationen erhalten, aber ohne den Typ Mitglied aufzurufen.
es neue API für das heißt, keine Notwendigkeit zu verwenden PDB Leser mehr, siehe meine Antwort –