Создание постоянного выражения в C # - PullRequest
0 голосов
/ 28 июня 2018

Есть ли способ создать выражение в C #, которое возвращает постоянное значение, но также имеет параметр?

Используя код, это выглядело бы как

var expression = x => 5  

Так что оно должно соответствовать Expression<Func<double, double>> типу.

Это, вероятно, должно выглядеть как

ParameterExpression param = Expression.Parameter(typeof(double), "parameter");
ConstantExpression constant = Expression.Constant(0.0);
var expression = Expression.SomeMagic(param, constant);
Expression.Lambda<Func<double, double>>(expression);

1 Ответ

0 голосов
/ 28 июня 2018

Вы передаете свои параметры в Expression.Lambda <> ():

https://msdn.microsoft.com/en-us/library/dd268052(v=vs.110).aspx

Итак, вы ищете что-то вроде:

ParameterExpression param = Expression.Parameter(typeof(double), "parameter");
ConstantExpression constant = Expression.Constant(0.0);

var expression = // build the body ...


Expression.Lambda<Func<double, double>>(expression, param);

Чтобы вернуть тот же параметр, это было бы так просто:

ParameterExpression param = Expression.Parameter(typeof(double), "parameter");

Expression.Lambda<Func<double, double>>(param, param);

Чтобы вернуть постоянное значение было бы:

ParameterExpression param = Expression.Parameter(typeof(double), "parameter");
ConstantExpression constant = Expression.Constant(0.0);

Expression.Lambda<Func<double, double>>(constant, param);
...