Я пытаюсь создать динамический запрос из выражений в соответствии с:
string pName = "Shaun";
List<Person> people = Person.Select(p => p.Name == pName );
Проблема возникает при оценке вышеприведенного выражения. Я не могу получить значение pName
, потому что это закрытие. Я пробовал:
(ex as ConstantExpression).Value;
и
object result = new object();
(ex as ConstantExpression).Value.GetType().GetFields()[0].GetValue(result);
но я получаю "'Field 'pName' defined on type 'ConsoleApp1.Program+<>c__DisplayClass0_0' is not a field on the target object which is of type 'System.Object'.'" exception
.
Кроме того,
object res = (ex as ConstantExpression).Value.GetType().GetFields()[0].GetRawConstantValue();
привело к 'Operation is not valid due to the current state of the object.' exception.
Как я могу прочитать значение из объекта замыкания?
Спасибо!