Так что вы действительно хотите разобрать строку в (в конце концов) типизированном делегате.
Одна опция, затем она для разбора строки в Expression
, которую вы затем можете скомпилировать в лямбду. Это довольно сложно, но у меня есть некоторый код, который сделает большую часть этого - но, возможно, существуют существующие парсеры, которые уже выполняют эту работу полностью.
В качестве тривиального Expression
примера:
var x = Expression.Parameter(typeof(double), "x");
var y = Expression.Parameter(typeof(double), "y");
var body = Expression.Multiply(x, y);
var func = Expression.Lambda<Func<double, double,double>>(body, x, y).Compile();
double z = func(123.45, 678.90);
Проблема в остальном коде синтаксического анализа; -p
На прошлой неделе я написал синтаксический анализатор string
to Expression
, но он содержит больше кода, чем я обычно публикую здесь ... более 300 строк (не включая распознавание сделанных на заказ внешних функций или именованных аргументов (в настоящее время использует анонимные "?" заполнители)).
но если (как вы говорите) интерпретация проста, то, возможно, использовать подобный код для написания Expression
, который вы можете скомпилировать?