我有一些方法:
public void Foo(Expression<Func<TModel, IEnumerable>> expression) {
// foo
}
我有变量:
Expression<Func<TModel, IList<TItem>>> expression;
我如何将变量传递给Foo
?
我有一些方法:
public void Foo(Expression<Func<TModel, IEnumerable>> expression) {
// foo
}
我有变量:
Expression<Func<TModel, IList<TItem>>> expression;
我如何将变量传递给Foo
?
您必须转换您的表达式变量:
var exp = Expression.Lambda<Func<TModel, IEnumerable>>(expression.Body, expression.Parameters);
Foo(exp);
用这个:
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);
}