重写虚拟方法:访问基础实现
在面向对象的环境中,当类重写虚拟方法时,它就成为公共的关于如何访问原始实现的问题。
考虑以下内容代码:
目标是从类 B 的范围内调用类 A 的 X 方法。但是,重写虚拟方法时的默认行为是替换派生类中的实现。
访问基本实现
在 C# 中,遗憾的是无法显式访问基本方法实现在被重写的方法之外。这是因为虚拟方法调度机制动态地将调用绑定到 B 中的重写实现。
替代方法
如果访问基本实现至关重要,则可能有值得考虑的设计缺陷。该功能可能不适合虚拟方法的目的,并且可能应该在非虚拟方法中实现。
或者,可以在重写的方法本身中调用基本实现:
但是,这个方法调用仅限于派生类重写的范围内
进一步探索
虽然 C# 没有提供访问基本实现的直接方法,但可以考虑使用其他方法,例如使用反射或 IL (中间语言)操纵来实现此行为。
以上是如何在 C# 中从派生类访问基类的虚拟方法实现?的详细内容。更多信息请关注PHP中文网其他相关文章!