2010年8月9日 星期一

取得程式碼所在位置的方法(Method)資訊or呼叫來源方法

在Debug的時候會將錯誤訊息寫入log檔,或是用messageBox跳出錯誤題示
有些時候會希望得知,這些錯誤訊息是在什麼Method中被呼叫的
又或者希望得知,發生錯誤訊息所在的Method,又是被哪個Method所呼叫

System.Reflection.MethodBase類別,就是用來存放Method資訊的
其中MethodBase.Name就可以取得方法名稱

使用System.Reflection.MethodBase.GetCurrentMethod();
可以取得目前程式碼所在的Method

System.Diagnostics.StackTrace類別,顧名思義就是用來追蹤堆疊的
使用StackTrace.GetFrame(0).GetMethod();
可以取得目前程式碼所在的Method
使用StackTrace.GetFrame(1).GetMethod();
可以取得目前程式碼所在的Method的上一層Method
使用StackTrace.GetFrame(2).GetMethod();
可以取得目前程式碼所在的Method的上一層Method的上一層Method.... 以此類推

ps. 使用StackTrace前必須先建立物件
ex: System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
st.GetFrames(1).GetMethod();

沒有留言:

張貼留言