Как получить значение ConstantExpression, использующего локальную переменную?

Я создал реализацию ExpressionVisitor, которая переопределяет VisitConstant. Однако когда я создаю выражение, использующее локальную переменную, мне кажется, что я не могу получить фактическое значение переменной.

public class Person
{
  public string FirstName { get; set; }
}

string name = "Michael";

Expression<Func<Person, object>> exp = p => p.FirstName == name;

Как я могу получить значение переменной name из ConstantExpression? Единственное, что я могу придумать, это следующее:

string fieldValue = value.GetType().GetFields().First().GetValue(value).ToString();

Очевидно, что это не очень гибко…

Несколько более сложный пример:

Person localPerson = new Person { FirstName = "Michael" };
Expression<Func<Person, object>> exp = p => p.FirstName == localPerson.FirstName;
19
задан devlife 9 August 2011 в 16:34
поделиться