将扩展方法与接口一起使用非常方便,因为实现可以存储在类之外,而向类添加某些功能所需的全部工作就是用接口装饰类。
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,因此也可以通过这种方式调用