当前位置:  开发笔记 > 编程语言 > 正文

覆盖扩展方法

如何解决《覆盖扩展方法》经验,为你挑选了2个好方法。

我一直在考虑使用扩展方法作为抽象基类的替代.扩展方法可以提供默认功能,并且可以通过在派生类中放置相同签名的方法来"覆盖".

我不应该这样做的原因?

另外,如果我有两个具有相同签名的扩展方法,使用哪一个?有没有办法确定优先权?



1> Michael Mead..:

通常,您不应通过扩展方法提供"基本"功能.它们只应用于"扩展"类功能.如果您可以访问基类代码,并且您尝试实现的功能在逻辑上是继承层次结构的一部分,那么您应该将它放在抽象类中.

我的观点是,仅仅因为你可以并不意味着你应该.当普通的OO编程无法为您提供合理的解决方案时,通常最好只使用优秀的老式OOP并使用更新的语言功能.



2> Dave Ray..:

这绝对是一个坏主意.扩展方法是静态绑定的,这意味着,除非您对编译时类型为子类型的对象调用覆盖,否则您仍将继续调用扩展方法.再见多态性.这个页面很好地讨论了扩展方法的危险.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有