如何獲取方法中使用的變量,然後我將在控制檯上編寫它們的值?反射在方法中獲取變量
回答
你不能。反射不擴展到讀取方法變量的值。它只處理變量的元數據聲明。即使如此,編譯器可能已經刪除了你認爲你聲明的變量。反射允許完全訪問字段(實例/靜態類型變量),但不能訪問方法變量。
您可以使用像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. 使用反射獲取方法描述
- 5. 使用Java反射類獲取方法
- 6. 使用反射獲取OrderBy方法
- 7. 反射,從方法獲取返回值
- 8. 使用反射獲取類方法
- 9. C#反射,獲取重載方法
- 10. 從方法獲取變量
- 11. 反射超載。爲反射可變參數值填充反射數組方法
- 12. Java反射:如何獲取變量的名稱?
- 13. 如何使用反射獲取變量名稱?
- 14. 獲取類的實例變量和使用反射
- 15. php:使用反射獲取變量類型提示
- 16. C#反射,改變方法的主體
- 17. c#反射改變屬性的方法
- 18. 無法獲取父類調用子類方法 - 使用反射
- 19. erb變量的反射
- 20. 反應:在變量內調用方法
- 21. 使用反射在Java中獲取成員變量值的陷阱
- 22. 調用setter方法使用循環變量和Java反射
- 23. 可以使用反射訪問方法變量嗎?
- 24. Java +反射:調用變量訪問方法。可能嗎?
- 25. 使用反射捕獲方法狀態
- 26. 提取PHP類方法反射值
- 27. 獲得矢量Java反射
- 28. 在反射API中使用object.getClass()方法
- 29. JavaScript:在原型中定義的方法中獲取變量名
- 30. 從方法簽名獲取arg類型(鏡像/反射/自檢?)
你有什麼試過的?你看看[這個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