Extension method, kelime anlamı ile genişletilebilir metod anlamına gelmektedir. Extension method bize .Net içerisinde bulunan sınıflara yeni metodlar eklememizi sağlamaktadır. Extension metodlar static class içerisinde static olarak tanımlanmaktadır.
Konu ile ilgili bir örnek yapalım. Int sınıfında ToString() metodu bulunmaktadır. Bu metod sayesinde biz int türünde olan bir değeri string türüne çevirebilmekteyiz.
int Sayi = 10; this.Text = Sayi.ToString();
Fakat String sınıfında doğrudan string bir değeri int türüne çevirebileceğimiz bir metod bulunmamaktadır. Extension metod tamda burada işimize yaramaktadır. Bu yapı ile kendimiz bir metod yazarak string bir değeri int türüne dönüştürebileceğiz.
Önce classımızı ve metodumuzu oluşturalım.
public static class ExtensionClass { public static int IntCevir(this string Deger) { return Int32.Parse(Deger); } }
Burada dikkat etmeniz gereken en önemli nokta parametrenin this anahtar kelimesi ile başlamasıdır. Bu ifade ile metodumuzun extension metod olduğunu belirtiyoruz. Sonrasında belirttiğimiz string ifadesi ile metodun hangi sınıflar üzerinde geçerli olacağını belirtmekteyiz.
Şimdi bu metodu kullanarak string bir değeri inceleyelim.
private void button1_Click(object sender, EventArgs e) { string StringSayi = "25"; int Sayi = StringSayi.IntCevir(); }
Görüldüğü gibi string tanımlı bir değer IntCevir() metodu ile int türüne çevrilmiştir. Metodun görünümü aşağıdaki gibidir.
Bu şekilde string sınıfına bir extension metod yazdık. Bu metod sadece string sınıfı için geçerlidir. Peki bunu bütün sınıflar için nasıl geçerli hale getirebiliriz ? Bunu yapmak için sadece string ifadesinin geçtiği yeri object yapmak yeterli olacaktır.
public static class ExtensionClass { public static int IntCevir(this object Deger) { return Convert.ToInt32(Deger); } }
Extension metodlara parametrede ekleyebilirsiniz. İlk örnek üzerinden gidelim. String bir ifadeyi int türüne dönüştürelim. Fakat dönüştürme aşamasında bizden birde çarpım adeti için parametre değeri istesin.
public static class ExtensionClass { public static int IntCevir(this string Deger, int Sayi) { return Convert.ToInt32(Deger) * Sayi; } }
Kodumuzda şu şekilde olacaktır.
private void button1_Click(object sender, EventArgs e) { string StringSayi = "25"; int Sayi = StringSayi.IntCevir(3); }
Bu şekilde 25 sayısı 3 ile çarpılacak ve 75 sonucunu döndürecektir.
Extension metod ile ilgili anlatacaklarım bu kadardır. Anlaşıldığı zaman uygulamalarınıza zenginlik katacak olan güzel bir yapıdır.
Başarılar dilerim.