Varolan Veri Tiplerine Metot Ekleme

String, StreamReader, DataBinder vs. gibi size hazır sunulan veri tiplerine, orijinali üzerinde değişiklik yapmadan yeni metotlar (fonksiyonlar) eklemek isteyebilirsiniz. Bu tür metotlara Genişletme Metotları (Extension Methods) deniliyor.

Diyelim ki, String sınıfına KelimeSayisi isimli yeni bir metot eklemek istiyorsunuz. Bunun için aşağıdaki kodu projenize eklemeniz yeterli.

public static class ExtensionMetotlarim
{
	public static int KelimeSayisi(this String str)
	{
		return str.Split(new char[] {' ', '.', ','}, StringSplitOptions.RemoveEmptyEntries).Length;
	}
}   

Daha sonra bu metodu şu şekilde kullanabilirsiniz:

// Herhangi bir string oluşturuluyor
string cumle = "Merhaba, bu cümlede toplam 7 kelime var.";

// kelimeSayisi değişkenine 7 değeri atanır
int kelimeSayisi = cumle.KelimeSayisi();

Yukarıdaki örnekte ben sınıf adı olarak ExtensionMetotlarim kullandım. Sınıf adını siz istediğiniz gibi seçebilirsiniz. Burada, sınıfın ve metodun static olduğuna dikkat etmişsinizdir. Burada ayrıca dikkat etmeniz gereken şey, metodun parametresi. Genişletme metotlarının ilk parametreleri hangi tipin genişletildiğini gösterir. Metot çağrılırken bu parametrenin değeri parantez içine yazılmaz. Çünkü ilk parametre, metodu çağıran nesnenin kendisidir. Yukarıdaki örnekte, cumle.KelimeSayisi() şeklinde çağrıldığı için, metodun ilk parametresi olan str değişkeni cumle değişkenini temsil etmektedir.

Eğer isterseniz birden fazla parametresi olan genişletme metotları da yazabilirsiniz.

public static class ExtensionMetotlarim
{
	public static int KelimeSayisi(this String str, char[] ayiraclar)
	{
		return str.Split(ayiraclar, StringSplitOptions.RemoveEmptyEntries).Length;
	}
}

Bu durumda, metot çağrılırken parantez içerisine ayiraclar değişkeninin değeri yazılmalıdır.

// Herhangi bir string oluşturuluyor
string cumle = "Merhaba, bu cümlede toplam 7 kelime var.";

// kelimeSayisi değişkenine 7 değeri atanır
int kelimeSayisi = cumle.KelimeSayisi(new char[] {' ', '.', ','});

Aşağıda adresini verdiğim siteden kod yazarken hayatınızı kolaylaştıracak bazı hazır genişletme metotlarını bulabilirsiniz.

http://www.extensionmethod.net

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.