2010-02-16 14 views
6

Powiedzmy, że masz MethodInfo lub inną podklasę MemberInfo dla tej sprawy, w C#. Czy można odzyskać nazwę pliku, w którym została zadeklarowana i ewentualnie numery wierszy, w których rozpoczyna się deklaracja? Ta informacja musi istnieć gdzieś w metadanych trybu debugowania, ponieważ utworzenie instancji StackTrace da ci tę informację. Czy powinienem szukać w System.Diagnostics zamiast System.Reflection?Czy można odzyskać informacje o pliku poprzez odbicie w C#?

Odpowiedz

1

Powinieneś używać klas Symbol.Diagnostics do pobierania informacji z plików .pdb. Oto dobry blog na nim

Coś jak to może działać:

using System; 
using System.Diagnostics; 

class Foo 
{ 
static void Main() 
{ 
    SmallFunc(); 
} 

static void SmallFunc() 
{ 
    PrintStack(); 
} 
static void PrintStack() 
{ 
    StackTrace st = new StackTrace(true); // true means get line numbers. 
    foreach(StackFrame f in st.GetFrames()) { 
     Console.Write(f); 
    } 
} 
} 
Powiązane problemy