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