我正在跟踪this blog以尝试为我目前正在处理的项目创建一个msaccess的iqueryable提供程序。
我得到了上面链接的页面,但是有两段代码创建了继承自ExpressionVisitor并重写其VisitMemberAccess方法的类,例如:

protected override Expression VisitMemberAccess(MemberExpression m)
    {
        if (m.Expression != null && m.Expression.NodeType == ExpressionType.Parameter)
        {
            if (this.sb.Length > 0)
            {
                this.sb.Append(", ");
            }
            this.sb.Append(m.Member.Name);
            return Expression.Convert(Expression.Call(this.row, miGetValue, Expression.Constant(iColumn++)), m.Type);
        }
        else
        {
            return base.VisitMemberAccess(m);
        }
    }

问题是,这不会编译,因为VisitMemberAccess方法不再可用。我在google上搜索了一段时间,发现了一些对这个方法的引用,但它们似乎都可以追溯到.net 3.5(例如,参见here)。
我想知道那个方法怎么了?更重要的是该怎么做而不是重写VisitMemberAccess

最佳答案

对于.net 4.0中.net 3.5framework的ExpressionVisitor.VisitMemberAccess等价方法是ExpressionVisitor.VisitMember。我不知道他们为什么改变了这个方法的名字。

09-19 20:37