как читать тело метода и идентифицировать выражения в отражении с #?

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

Например, предположим, что у меня есть класс,

class Employee
{
private int Number1{get;set;}
private int Number2{get;set;}

public int GetNumber()
{
  if(Number1>0)
  {
     return Number1;
  }
  else if(Number2>0)
  {
     return Number2;
  }
  return Number1 + Number2;
  }
}

Итак, если вы видите, что у вышеуказанного класса есть метод с некоторыми условиями. Поразмыслив, я хочу прочитать тело метода и определить эти условия. Нравиться,

var methodBody = methodInfo.GetMethodBody();
methodBody.Condition?????

person user3383568    schedule 28.07.2015    source источник
comment
Я не думаю, что у вас получится заставить его работать так, особенно когда код оптимизирован, потому что многие ваши условия могут быть удалены. Какую актуальную проблему вы пытаетесь здесь решить?   -  person Ron Beyer    schedule 28.07.2015
comment
Отражение предназначено для извлечения метаданных - это не декомпилятор.   -  person D Stanley    schedule 28.07.2015
comment
Есть причина, по которой System. Пространство имен Linq.Expressions появилось для поддержки Linq, и дело не в том, что они хотели выполнять всю работу дважды.   -  person Damien_The_Unbeliever    schedule 28.07.2015
comment
Я пытаюсь построить график возможных путей вызова для данного метода. Например, если пользователь дает мне имя класса, я хочу проанализировать все методы и сказать пользователю, эй, босс, у вашего класса есть столько методов, и у каждого есть столько возможных путей выполнения ... с графиком ...   -  person user3383568    schedule 29.07.2015