如何在.net中引用特定的基类方法?
本文关键字:基类 类方法 引用 net | 更新日期: 2023-09-27 18:01:21
在。net中,我正在尝试对第三方库进行猴子补丁。我创建了一个新类,Grandchild,它继承了从Parent派生的类Child。在孙子的重写方法中,我需要跳过Child并调用Parent。这可能吗?换句话说,我想做:
public class Grandchild : Child {
public void override MyMethod() {
// illegal syntax examples, but how can I invoke Parent.MyMethod?
base.base.MyMethod(); // nope...
Parent.MyMethod(); // nope...
}
}
这是根本做不到的,即使有反射也不行,而且有一个很好的理由——安全。
如果你分布的类强制执行了一些业务规则,而客户端能够跳过这些规则,那么你可能会遇到一个巨大的安全漏洞。这种基本的多态性规则是不能违反的。
安全性也是表达式树不能包含对base
引用的原因,Eric Lippert在这里解释了这一点。
//this is illegal
Expression<Func<string>> nonVirtualCall = () => base.Method();