C# 实现扩展方法的几种途径

扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。-MSDN

在我们编码过程中,很多时候对象自带的几个处理方法无法无法满足我们的需求,比如string类型的数据自带了比如equals,indexof,substring之类处理字符串的方法。

但有时候项目里就可以能多次使用了对字符串的特殊处理方法。比如我们要对某些从前端传入的业务数据做特殊字符以及字符串的过滤。

一般我们会写一个StringHelper类,里面有个叫做filter的方法,我们使用StringHelper.filter(Str)方法实现过滤方法的复用。

但其实,这个filter可以绑定到string类里面 我们可以直接Str.filter()调用
而我们需要做的是写一个静态类,里面写一个filter的静态方法.

   static class utils
    {
        public static string filter(this string str)
        {

            //。。。对str的处理。。。。

            return str;
        }
    }

this string表示给string对象添加扩展方法,可以是内置对象,也可以是你自定义的类。

扩展方法还支持泛型

//测试方法
  public static T Test(this T instance) where T : MyClass
  {
       T Res = default(T);
       try
       {
           Res.AttrTest = instance.AttrTest.Substring(0,2);
      }
      catch
      { }
      return Res;
  }