将扩展方法与接口一起使用非常方便,因为实现可以存储在类之外,而向类添加某些功能所需的全部工作就是用接口装饰类。
public interface IInterface { string Do() } public static class ExtensionMethods{ public static string DoWith(this IInterface obj){ //用IInterface实例做一些事情 } } public class Classy : IInterface { //这是一个包装方法;您也可以直接在Classy实例上调用DoWith(), // 如果您导入包含扩展方法的名称空间 public Do(){ return this.DoWith(); } }
用途像:
var classy = new Classy(); classy.Do(); // 将调用扩展名 classy.DoWith(); // Classy实现了IInterface,因此也可以通过这种方式调用