當你有下面這樣一個需求的時候,擴展方法就會起到作用:在項目中,類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)了。
參考:<a href="http://hovertree.com/h/bjaf/0na4gr7f.htm" target="_blank">http://hovertree.com/h/bjaf/0na4gr7f.htm</a>