Итак, я пытаюсь узнать, как собрать свои собственные выражения, передать объекты и скомпилировать, чтобы получить сгенерированный результат, и я застреваю, пытаясь понять, где именно находится экземпляр объекта во всем этом ,Динамические выражения и манипуляции с динамической строкой
Так это то, что я получил до сих пор от чтения через код и пошагового
Создать экземпляр объекта, ваш expressionstring и параметры.
T SampleString = "Some String I have"; var operation= "it.Replace(@0, @1)"; var operationParameters = new [] { "e", "CLOWN"};
Создание объекта ParameterExpression указать тип параметра ваша работа будет выполнена на
ParameterExpression[] parameters = new ParameterExpression[] { Expression.Parameter(typeof(T), "") };
Использование класса ExpressionParser, создайте выражение, которое вы должны быть выполнены с вашего объекта
ExpressionParser parser = new ExpressionParser(parameters, operation, operationParameters);
Вызывается метод анализа выражения ExpressionParser для получения сгенерированного выражения, p Ассинг это тип результата вы хотите
var generatedExpression = parser.Parse(typeof(String));
Теперь вызовите Expression.Lamba, передавая ему generatedExpression, а элемент
var StringReplaceresult = Expression.Lambda<Func<T,String> >(generatedExpression , parameters).Compile()(item);
Я не совсем уверен, что если выше является правильным, или когда именно проблема, с которой я сталкиваюсь, начинается. Я знаю, что мой компилятор не работает (5). Сообщение состоит в том, что он не передает нужное количество параметров методу Expression.Lamba. Но я задаюсь вопросом, действительно ли это проблема, поскольку, опять же, я не уверен, что получаю это даже на 60%, поэтому я был бы признателен, если кто-то, пожалуйста, исправит мою работу выше, где это необходимо.
Что такое 'ExpressionParser'? Это из какой-то библиотеки? – svick