Reflection Получить переменные в методе

Как я могу получить переменные, используемые в методе, которые затем я напишу их значения в консоли?

2 ответа

Ты не можешь. Отражение не распространяется на чтение значений переменных метода. Он обрабатывает только метаданные объявления переменных. И даже тогда компилятор мог удалить переменную, которую вы считали объявленной. Reflection обеспечивает полный доступ к полям (переменные экземпляра / статического типа), но не к переменным метода.

Есть трюки, которые вы можете использовать как лямбда-выражения, но это меняет их форму (из переменных метода в поля экземпляра).

Я не думаю, что это возможно, но если вы копаете 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
Другие вопросы по тегам