我在尝试将Expression<Func<Entity, bool>>
类型的表达式转换为Func<Entity, bool>
。如何将表达式转换为lambda表达式?
这里的背景是,我试图嘲笑一个存储库,以便它将为给定的键值返回一个模拟实体集合。 (我可以将输入值硬编码到模拟方法,但这对于大量项目来说似乎是错误的方法)。
所以我想嘲笑我的存储库中的第一种方法是这样的:
var collection = new List<Entity>
{
mockedEntity1,
mockedEntity2,
mockedEntity3,
...
};
mockRepository
.Setup(rep => rep.First(It.IsAny<Expression<Func<Entity, bool>>>()))
.Returns<Expression<Func<Entity, bool>>>(e => collection.First(e));
这不起作用,因为collection.First需要一个函数功能,而不是一个Expression>。所以我已经到了需要将表达式转换为它包含的Func的地步。
也许有更简单或更好的做到这一点?
谢谢。这工作:) – Reee