更新: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(); // } } |