我正在跟踪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
。我不知道他们为什么改变了这个方法的名字。