4

このブログに従って、現在取り組んでいるプロジェクトの 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問題は、メソッドが使用できなくなったため、これがコンパイルされないことです。私はこれをしばらくグーグルで検索し、このメソッドへの参照をいくつか見つけましたが、それらはすべて .NET 3.5 にさかのぼるようです (例については、こちらを参照してください)。

その方法に何が起こったのか知りたいですか?さらに重要なのは、オーバーライドする代わりに何をすべきかですVisitMemberAccess

4

1 に答える 1

8

.NET 4.0の .NET 3.5 フレームワークの同等のメソッドExpressionVisitor.VisitMemberAccessExpressionVisitor.VisitMember. メソッドの名前を変更した理由はわかりません。

于 2012-12-26T08:36:32.697 に答える