首先我们来看一个最简单的类和对应类的最简单的扩展方法:
这样A就扩展出一个HelloExt 方法来了, 可以这样调用:
然后我们来看看最简单的接口和对应接口的最简单的扩展方法:
让A实现IA接口,
就可以调用接口的HelloExt方法:
说到这里,可能有些人留意到了:A 和 IA 都同时扩展了HelloExt方法,那么前面例子的 a.HelloExt() 在这个时候还会调用了A的扩展方法吗?还是会调用接口IA里面的扩展方法?
可以看到扩展方法提示有重载:
最后运行可以看到A还是调用了自己的扩展方法
保持以上代码不变,只是去掉AExt里面的扩展方法,那么同样运行
A就又跑回接口IA的扩展方法里去
(汗~这是当然的了,只有一个还能跑哪里去)
那么,如果这样呢?
嗯...
两个扩展方法都出来了:
对于继承,让B去继承A,或者既继承A又实现IA:
public class B : A, IA
而最终B调用扩展方法也跟A一样。这里略去,有兴趣的朋友自己试试。
说到这里,令我想起这个现象跟一般接口继承其实是差不多的:
这篇文章可能对部分人来说并没有找到啥子“乐趣”,但我至少学到了很多。
谢谢!