このブログに従って、現在取り組んでいるプロジェクトの 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
。