我需要转换表达式的类型:
Expression<Func<IQueryable<TModelBase>, IIncludableQueryable<TModelBase, object>>>
收件人:
Expression<Func<IQueryable<TModel>, IIncludableQueryable<TModel, object>>>
其中:
TModel : TModelBase
我已经尝试过Expression.Convert方法:
var converted = Expression.Convert(_baseExpression, typeof(IIncludableQueryable<TModel, object>));
几乎成功了,因为它在主体“转换”中返回了带有新类型和新单词的Expression。我希望Expression.Body与Convert之前的外观相同,但是类型有所更改。
转换后返回表达式的示例:
{x => Convert(x => x.Include(m => m.MaterialBaseSomething).Include(m => m.MaterialBaseGroup), IIncludableQueryable`2)}
我还尝试过ExpressionVisitor来更改参数类型。我明白了:
Expression<Func<IQueryable<TModel>, IIncludableQueryable<TModelBase, object>>>
所以我仍然需要更改结果类型。