Как мне использовать отражение для получения полей метода?

#c# #reflection #methodinfo #fieldinfo

#c# #отражение #methodinfo #fieldinfo

Вопрос:

Как я могу использовать отражение пользователя, чтобы получить поля внутри метода? Я пытался использовать MethodInfo, а затем GetFields, но возвращаемые значения не являются полями, которые я определил в методе.

Например, используя приведенный ниже код, как я могу получить информацию о поле для LineNo?

     private void MyMethod()
    {
        int LineNo = 0;
    }
  

Спасибо

Комментарии:

1. Зачем вам это нужно?

2. Чтение входного файла CSV, его синтаксический анализ и затем создание выходного файла CSV. Заголовки столбцов выходного файла основаны на перечислении. Я хотел использовать коллекцию enum Names, а затем назначить подобные именованные локальные переменные. Я никогда раньше не пытался сделать это на уровне метода. Всегда хорошо быть обученным :-).

3. Если вам нужны данные из метода, верните эти данные.

4. Короткий ответ: вы не можете. внутри метода находится IL-код, его нельзя описать в терминах «полей». Средний ответ: этот код можно декомпилировать с помощью библиотеки, подобной roslyn. Длинный ответ: это, вероятно, было бы огромным излишеством, учитывая задачу, которую вы описали (и которую я до сих пор не понял). Любая приличная библиотека генератора синтаксического анализа CSV позволит вам получать доступ к столбцам по имени. Так что, вероятно, нет необходимости называть локальный var.

Ответ №1:

  1. Это не поля, а локальные переменные.
  2. В лучшем случае вы можете получить IL тела метода. Если вы можете каким-то образом проанализировать это, вы сможете получить доступ ко всем локальным файлам, объявленным в методе.

Ответ №2:

С отражением вы не можете получить значения поля в коде функции,

Вы можете получить значения поля класса / Объекта.

Комментарии:

1. Методы не имеют «полей».