在.NET中,我试图修补第三方库.我创建了一个新类Grandchild,它继承自Parent派生的类Child.在Grandchild的覆盖方法中,我需要跳过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...
}
}
Run Code Online (Sandbox Code Playgroud)
这根本不可能完成,甚至不能用反射,并且有一个很好的理由 - 安全性.
如果您分发的类强制执行某些业务规则,并且客户端能够跳过这些规则,则可能会遇到巨大的安全漏洞.这样的基本多态性规则根本不能被违反.
安全性也是表达树不能包含引用的原因base,正如Eric Lippert 在此解释的那样.
//this is illegal
Expression<Func<string>> nonVirtualCall = () => base.Method();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |