似乎您在VisitMember()中两次生成了参数表达式:
var converted = expression.MakeMemberAccess( base.Visit(node.expression), activeRecordType.GetProperty(node.Member.Name));
…因为base.Visit()将以我想象的VisitParameter和GetMany()本身结尾:
var lambda = expression.Lambda<Func<ActiveRecord.Widget, bool>>( visitor.Visit(predicate.Body), predicate.Parameters.Select(p => visitor.Visit(p));
如果您在主体中使用Parameterexpression,则它必须与为Lambda声明的实例具有相同的实例(不仅仅是相同的类型和名称)。在这种情况下,我曾经遇到过问题,尽管我认为结果是我无法创建表达式,但它只会引发异常。无论如何,您都可以尝试重用参数实例,以查看是否有帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)