Créer une expression constante en C #

c# expression expression-trees lambda

Question

Existe-t-il un moyen de créer une expression en C #, qui retourne une valeur constante, mais qui possède également un paramètre?

En utilisant du code, cela ressemblerait à

var expression = x => 5  

Il doit donc correspondre au type Expression<Func<double, double>> .

Il devrait probablement ressembler à

var expression = x => 5  

Réponse acceptée

Vous transmettez vos paramètres dans Expression.Lambda <> ():

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

Donc, vous cherchez quelque chose comme:

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);

Pour retourner le même paramètre, ce serait aussi simple que:

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);

Pour renvoyer la valeur constante serait:

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);



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi