我在嘗試將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