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

在子类中重载的父类上创建的调用扩展方法

如何解决《在子类中重载的父类上创建的调用扩展方法》经验,为你挑选了1个好方法。



1> Jon Skeet..:

如何调用Extension方法ExtTest?

实例方法始终优先于扩展方法 - 编译器仅在其他所有方法都失败后检查扩展方法.

在这种情况下,最简单的方法是使用类型的变量WebServiceSender:

WebServiceSender d = new ChildWebServiceSender();
d.ExtTest("abc"); // This will call the extension method

执行时类型d无关紧要 - 只有编译时类型.

如果您还需要调用方法ChildWebServiceSender,则可以使用两个引用同一对象的变量:

ChildWebServiceSender child = new ChildWebServiceSender();
WebServiceSender baseRef = child;
child.ExtTest("abc"); // This will call the child instance method
baseRef.ExtTest("abc"); // This will call the extension method

(当然,您可以使用强制转换 - 我认为这将更清楚地阅读.主要的一点是您希望类型的表达式WebServiceSender作为方法调用的目标.)

或者您可以将该方法称为常规静态方法:

// TODO: Rename "util" to follow .NET naming conventions
util.ExtTest(d, "abc");

或者,更好的是,您可以重命名扩展方法或实例方法,以便它们不会发生冲突 - 这将使读取您尝试调用的代码的任何人都更清楚.

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