更新:2007 年 11 月

错误消息

表达式目录树不能包含基访问。

基访问意味着在基类方法上,以非虚函数调用的方式执行通常是虚函数调用的函数调用。这在表达式目录树本身中是不允许的,但可以在调用基类方法的类中调用帮助器方法。

更正此错误

  • 如果必须用此方式访问基类方法,则创建一个调用该基类的帮助器方法,并使表达式目录树调用该帮助器方法。下面的代码演示了此项技术。

示例

下面的示例生成 CS0831:

 复制代码
// cs0831.cs
using System;
using System.Linq;
using System.Linq.Expressions;

public class A
{
    public virtual int BaseMethod() { return 1; }
}
public class C : A
{
    public override int BaseMethod() { return 2; }
    public int Test(C c)
    {
        Expression<Func<int>> e = () => base.BaseMethod(); // CS0831

        // Try the following line instead, 
        // along with the BaseAccessHelper method.
        // Expression<Func<int>> e2 = () => BaseAccessHelper();
        return 1;
    } 
    // Uncomment to call from e2 expression above.
    // int BaseAccessHelper()
    // {
    //     return base.BaseMethod();
    // }
    
}