當你有下面這樣一個需求的時候,擴充方法就會起到作用:在項目中,類A需要添加功能,我們想到的就是在類A中添加公用方法,這個顯而易見肯定可以,但是由於某種原因,你不能修改類A本身的代碼,但是確實又需要增加功能到類A中去,怎麼辦? 這個時候擴充方法(Extension Methods)就會協助你完成上述功能了。現在舉例如下:
類A:簡單起見,類A中只有一個自己的方法。
using System;namespace TestApp.Method{ public class Test { public void TestMethod() { Console.WriteLine("public void TestMethod()"); } }}
現在我需要讓類A添加一個方法,但是又不能修改類A,好,那我們就添加一個擴充方法(Extension Methods)如下:
using System;using TestApp.Method;namespace TestApp.ExtensionMethod{ public static class ExtendClass { public static void ExtendMethod(this Test test) { Console.WriteLine("test.ExtendMethod()"); } }}
其實,擴充方法(Extension Methods)當然需要一個類封裝,所以我們必須得有一個類,請注意,這個類必須是靜態類,另外擴充方法(Extension Methods)必須也是靜態方法,方法的參數中必須要有被擴充類作為其中一個參數,此參數前面用this關鍵字修飾。
好了,這樣我們的擴充就算完成了,下面我們就可以通過類A的執行個體來調用這個擴充方法了,如下:
using System;using TestApp.ExtensionMethod;using TestApp.Method;namespace TestApp{ static void Main(string[] args) { Test test = new Test(); test.TestMethod(); // Call the method of itself test.ExtendMethod(); // Call the extension method }}
這裡只要using擴充方法(Extension Methods)所在命名空間既可以通過類A的執行個體來調用這個擴充方法(Extension Methods)了。
另外MSDN有一篇文章專門講這個的,大家可以去看看:
Extension Methods 。