reflection在方法中获取变量

我怎样才能获得Method中使用的变量,然后我将在Console上写下它们的值?

你不能。 reflection不会扩展到读取方法变量的值 。 它只处理变量的声明元数据。 即便如此,编译器可能已经删除了您认为已声明的变量。 Reflection允许完全访问字段 (实例/静态类型变量),但不允许方法变量。

你可以使用像lambda表达式那样的技巧,但这会改变它们的forms (从方法变量到实例字段)。

我认为它可能,但如果你挖掘IL代码并查看Method.Body。 您可以了解所使用的临时变量。

但是很难将温度与变量区分开来,因为所有的语法糖都消失了

更新:Jus在搜索这个问题时发现了它。 不确定它是否有效。

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