2010-02-16 71 views
6

假設你在C#中有一個MethodInfo或MemberInfo的任何其他子類。是否有可能檢索它聲明的文件的名稱以及可能的聲明開始位置的行號?此信息必須存在於調試模式元數據中的某處,因爲創建StackTrace的實例將爲您提供該信息。我應該看看System.Diagnostics而不是System.Reflection?是否有可能通過C#中的反射檢索文件信息?

回答

1

您應該使用System.Diagnostics Symbol類從.pdb文件中提取信息。這裏是一個很好blog

像這樣的東西可能會奏效:

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); 
    } 
} 
} 
相關問題