https://www.cnblogs.com/wpinfo/p/extention_method.html
一、如何定义:
1、创建一个静态类(类名一般为所要扩展的类名+Extensions)
2、在其中创建一个静态方法
3、为这个静态方法添加至少一个参数,并在第一个参数前加上this关键字,这个关键字会告诉编辑器当前方法是一个扩展方法。而这个方法将成为第一个参数所属类型的新成员。
以下为一个典型的扩展方法:
注意:只有在引用扩展方法所在的静态类的命名空间后,才能使用它;否则,直接调用会编译失败。上例中,使用该扩展方法要引用TLA.Infrastructure.Extensions命名空间。
二、何时使用
从扩展方法的概念上,不难看出,它可以用在以下几种场合:
1、要为某个类型扩展功能,但没有其源码,比如某个框架或第三方库中的一个类;例如,想要获取一个列表中所有的奇数项,就可以为IList<T>接口增加一个扩展方法,这里的IList<T>接口本身是.NET框架中的接口。
1、要为某个类型扩展功能,但没有其源码,比如某个框架或第三方库中的一个类;例如,想要获取一个列表中所有的奇数项,就可以为IList<T>接口增加一个扩展方法,这里的IList<T>接口本身是.NET框架中的接口。
2、即使可以访问原有类型的源码,也可以使用扩展方法为它添加辅助功能;
3、重用代码,使代码更简洁;由于扩展方法封装了一段完整的逻辑,所以,使用扩展方法就避免了复制粘贴代码的情况。上例中扩展方法的内容也符合这种使用场景。