扩展方法简介
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。 对于用 C#、F# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法没有明显区别。
详见微软官方文档的定义和使用说明:扩展方法(C# 编程指南)
编写方法
定义一个测试用的类,并包含一个成员方法:
public class Module { public void Func1() { // TODO.. } }
定义一个静态类,编写一个静态方法,用于扩展Module类:
public static class TestExtension { public static void Func2(this Module mod) { // TODO.. } }
调用测试:
public void Test() { var mod = new Module(); mod.Func1(); mod.Func2(); }
扩展方法的注意点:
* 需要写在一个静态类中
* 必须是一个静态方法
* 通过第一个参数和this关键字指定扩展的目标类型
* 不同类型的扩展方法不一定要写在同一个类中
如上所示,对Module类进行扩展后,可以和调用原生方法一样,调用扩展方法,在上层使用感受不到区别。通过这种方式,可以很好的对C#原生的类型,和不开源的第三方库,增加额外需求的、符合自己书写习惯的或者有效提高项目开发效率的新接口。