将谓词的表达式树突变为目标另一种类型

将谓词的表达式树突变为目标另一种类型,第1张

将谓词的表达式树突变为目标另一种类型

似乎您在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声明的实例具有相同的实例(不仅仅是相同的类型和名称)。在这种情况下,我曾经遇到过问题,尽管我认为结果是我无法创建表达式,但它只会引发异常。无论如何,您都可以尝试重用参数实例,以查看是否有帮助。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5440842.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存