在 C# 中创建常量表达式
Creating a constant Expression in C#
有没有办法在 C# 中创建一个表达式,returns 一个常数值,但也有一个参数?
使用代码,它看起来像
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);
您将参数传递给 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);
到return同样的参数,就这么简单:
ParameterExpression param = Expression.Parameter(typeof(double), "parameter");
Expression.Lambda<Func<double, double>>(param, param);
到 return 常量值将是:
ParameterExpression param = Expression.Parameter(typeof(double), "parameter");
ConstantExpression constant = Expression.Constant(0.0);
Expression.Lambda<Func<double, double>>(constant, param);
有没有办法在 C# 中创建一个表达式,returns 一个常数值,但也有一个参数?
使用代码,它看起来像
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);
您将参数传递给 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);
到return同样的参数,就这么简单:
ParameterExpression param = Expression.Parameter(typeof(double), "parameter");
Expression.Lambda<Func<double, double>>(param, param);
到 return 常量值将是:
ParameterExpression param = Expression.Parameter(typeof(double), "parameter");
ConstantExpression constant = Expression.Constant(0.0);
Expression.Lambda<Func<double, double>>(constant, param);