Я создал реализацию 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;