我有一些方法:
public void Foo(Expression<Func<TModel, IEnumerable>> expression) {
// foo
}
我有变量:
Expression<Func<TModel, IList<TItem>>> expression;
如何将变量传递给Foo
?
答案 0 :(得分:4)
您必须转换表达式变量:
var exp = Expression.Lambda<Func<TModel, IEnumerable>>(expression.Body, expression.Parameters);
Foo(exp);
答案 1 :(得分:1)
使用此:
public Expression<Func<TModel, IEnumerable>> ConvertExpression<TModel, TItem>(Expression<Func<TModel, IList<TItem>>> expression)
{
return (Expression<Func<TModel, IEnumerable>>)Expression
.Lambda(Expression.Convert(expression.Body, typeof(IEnumerable)), expression.Parameters);
}