如何獲取方法中使用的變量,然後我將在控制檯上編寫它們的值?反射在方法中獲取變量
回答
你不能。反射不擴展到讀取方法變量的值。它只處理變量的元數據聲明。即使如此,編譯器可能已經刪除了你認爲你聲明的變量。反射允許完全訪問字段(實例/靜態類型變量),但不能訪問方法變量。
您可以使用像lambda表達式這樣的技巧,但是此將其形式更改爲(從方法變量到實例字段)。
有沒有關於lambda表達式的例子? – 2012-08-04 08:43:45
@Ufuk當然,也許看看http://stackoverflow.com/questions/671968/retrieving-property-name-from-lambda-expression – 2012-08-04 08:45:54
我不認爲它是可能的,但如果你挖掘IL代碼,並看看Method.Body。你可以知道使用的臨時局部變量。
但因爲所有的語法糖不見了
UPDATE將很難從變量區分臨時工: 物權法,而在這個問題上搜索發現它。不知道它是否有效。
System.Diagnostics.StackFrame stackFrame = new System.Diagnostics.StackFrame();
System.Reflection.MethodBase methodBase = stackFrame.GetMethod();
methodBase.GetParameters(); //Array of System.Reflection.ParameterInfo[]
methodBase.GetMethodBody().LocalVariables; //List of Local variables declared in the body
LocalVariables只獲取變量元數據(減去變量的名稱)而不是數據(參見https://msdn.microsoft.com/en-us/library/system.reflection.localvariableinfo(v=vs.110).aspx) – seebiscuit 2017-12-27 16:28:07
- 1. 使用反射獲取類變量值
- 2. 變量參數反射方法調用
- 3. 用Java反射調用變量方法?
- 4. 使用反射獲取OrderBy方法
- 5. 使用反射獲取方法描述
- 6. 通過反射獲取陰影方法
- 7. Java,反射,獲取類的方法
- 8. 使用反射獲取類方法
- 9. C#反射,獲取重載方法
- 10. 反射,從方法獲取返回值
- 11. 使用Java反射類獲取方法
- 12. 在運行時使用Dlang中的反射獲取變量值
- 13. 從方法獲取變量
- 14. 反射:在靜態方法中獲取調用對象
- 15. 獲取變量在方法內工作
- 16. 反射超載。爲反射可變參數值填充反射數組方法
- 17. c#反射改變屬性的方法
- 18. C#反射,改變方法的主體
- 19. 是否可以通過反射獲取局部變量?
- 20. Java反射:如何獲取變量的名稱?
- 21. 如何使用反射獲取變量名稱?
- 22. 通過反射獲取字符串變量值
- 23. php:使用反射獲取變量類型提示
- 24. 如何通過反射屬性獲取變量/字段名稱?
- 25. 獲取類的實例變量和使用反射
- 26. 無法獲取父類調用子類方法 - 使用反射
- 27. 方法不反射
- 28. erb變量的反射
- 29. 反應:在變量內調用方法
- 30. 使用反射捕獲方法狀態
你有什麼試過的?你看看[這個SO問題](http://stackoverflow.com/questions/11739096/determining-all-types-used-by-a-certain-type-in-c-sharp-using-reflection)? – 2012-08-04 08:35:52
但它給了我他們的類型我需要他們的價值 – 2012-08-04 08:38:54
他們只有在該方法的範圍內的值。試圖從方法之外獲得「價值」是沒有意義的。 – spender 2012-08-04 08:39:55