是否有一種方法可以使用.NET反射來捕獲所有參數/局部變量的值?使用反射捕獲方法狀態
回答
你可以使用CLR debugging API雖然它不會是在這個信息得到一個簡單的幾行提取它。
託管調試器示例:http://www.microsoft.com/downloads/details.aspx?familyid=38449a42-6b7a-4e28-80ce-c55645ab1310&displaylang=en – 2009-11-23 00:46:48
反射不用於捕獲堆棧中的信息。它讀取大會。
你可能想看看堆棧跟蹤
http://msdn.microsoft.com/en-us/library/system.diagnostics.stacktrace.aspx
好文章在這裏:
http://www.codeproject.com/KB/trace/customtracelistener.aspx
CodeProject文章顯示參數名稱,但不顯示值 – 2011-11-04 18:08:32
反射會告訴你方法具有的參數的類型,但它不會幫助在任何特定的調用中發現它們的值。反射並沒有告訴你任何有關局部變量的信息。
您需要調試器用來訪問這類信息的那種API。
我不認爲這是可能的,你可以通過查看StackTrace來獲取方法及其參數。
System.Diagnostics.StackTrace sTrace = new System.Diagnostics.StackTrace(true);
for (Int32 frameCount = 0; frameCount < sTrace.FrameCount; frameCount++){
System.Diagnostics.StackFrame sFrame = sTrace.GetFrame(frameCount);
System.Reflection.MethodBase thisMethod = sFrame.GetMethod();
if (thisMethod == currentMethod){
if (frameCount + 1 <= sTrace.FrameCount){
System.Diagnostics.StackFrame prevFrame = sTrace.GetFrame(frameCount + 1);
System.Reflection.MethodBase prevMethod = prevFrame.GetMethod();
}
}
}
我不知道如何使用反射,但看看使用編織。 SpringFramework.Net允許你定義可以攔截方法調用的切入點。其他人也可能這樣做。
這裏的「BeforeAdvice」攔截 http://www.springframework.net/docs/1.2.0-M1/reference/html/aop.html#d0e8139
在secondlife鄉親暫停腳本和服務器之間移動它們的鏈接。這意味着他們必須捕獲正在運行的腳本的狀態,包括調用堆棧上變量的值。
他們的腳本語言運行在單聲道,.NET運行時的開源實現。我懷疑他們的解決方案適用於常規的.NET運行時,但video of the presentation on how they did it(跳到下半部分)可能仍然很有趣。
- 1. 使用反射動態調用方法
- 2. 使用反射調用靜態方法
- 3. 使用反射的靜態方法
- 4. 在方法中使用狀態 - 反應
- 5. 使用反射獲取OrderBy方法
- 6. 使用反射獲取方法描述
- 7. 使用反射獲取類方法
- 8. 使用Java反射類獲取方法
- 9. 使用反射來獲取靜態方法將其參數
- 10. 獲取參數使用反射的動態方法的類型
- 11. 使用反射類方法
- 12. 無法捕獲可用狀態..?
- 13. 狀態機反射轉換
- 14. 反射MethodInfo.Invoke()從方法內部捕獲異常
- 15. 使用反射來獲取靜態類
- 16. 反射:在靜態方法中獲取調用對象
- 17. 無法獲取父類調用子類方法 - 使用反射
- 18. 使用反射調用通用類的靜態方法
- 19. 使用反射的Java調用方法
- 20. 使用反射調用方法
- 21. 使用反射的調用方法
- 22. 如何使用反射調用方法
- 23. 使用反射的調用方法
- 24. 使用反射調用方法列表
- 25. Android/Java:使用反射調用方法?
- 26. 如何使用反射調用動態對象的方法
- 27. 使用反射調用java/groovy對象的靜態方法
- 28. 使用反射C調用靜態類的方法#
- 29. 在scala中使用反射的動態對象方法調用
- 30. 使用反射調用主類中的靜態方法
您能否提供您正在嘗試存檔的用例? – Alex 2009-11-23 00:51:21