【发布时间】:2021-12-26 08:11:48
【问题描述】:
我在 C# 中的通用抽象类中有一个方法,但似乎一旦我运行应用程序:
System.ArgumentException: Unsupported filter: Invoke(value(...), {document}).
以及产生错误的代码:
public I Get<I>(string id, IBsonSerializer<I> serializer = null, Predicate<M> condition) where I : IModelBase =>
Items.Find(M => M.Id == id && condition(M)).As(serializer).FirstOrDefault();
现在问题在于 Find 调用,因此您可以忽略其他代码。
我发现我可以用(condition ?? (ignore => true))(M) 替换condition(M) 部分,但即使这样也无济于事。
有什么建议吗?
谢谢。
【问题讨论】:
-
什么是
Items? -
@Llama 这是一个
IMongoCollection<M>- 类似于集合的界面。现在我很确定这只是Find内部的问题需要关注... -
M是一种类型吗?还是在定义此方法的类中定义的类型变量?还是别的什么? -
什么是
Predicate<M>?那么这与mongo有关吗?您的问题缺少很多上下文,因此很难回答。
标签: c# lambda abstract-class predicate