Programlama dillerinde varsayılan olarak gelen tiplere yapılan eklemelere, bir başka deyişle yamalara extension metod diyebiliriz. Bu yazıda, c# ile extension methodların nasıl tanımlandığını, nasıl uygulandığını ve hangi mantıkla çalıştığını incelemeye çalışacağız.
C# dilinin temel tipleri olan int, string, double ve sayamadığım birçok tip, object tipinden türemiştir ve object tipinin özelliklerini taşımaktadır. Biz de bu özelliklerin yanında gerekli olan metodları bu tiplere ekleyebiliriz.
Örneğin şöyle bir senaryomuz olsun: string türündeki içerikler eğer belli bir karakterden uzunsa (…) şeklinde kısaltılsın.
Bunun için extension metodumuzu hazırlayalım. Extension metodun ulaşılabilmesi için bir static class içerisinde, static bir metod olarak tanımlanması gerekir.
public static class ExtensionString { public static string Kisaltma(this string text, int maxSize) { return text.Length > maxSize ? text.Substring(0, maxSize).Insert(maxSize, "...") : text; } }
Yukarıda görüldüğü üzere, ExtensionString adında static bir sınıf ve Kisaltma adında static bir metod oluşturuldu. Kisaltma metodu this string şeklinde bir parametre almaktadır. Bu demek oluyor ki Kisaltma metodu, string tipindeki değişkenlere eklenecek. Yani artık her string değişkeni, Kisaltma adında bir metoda sahip.
Burada dikkat edilmesi gereken, extension metodu barındıran sınıfın kullanılmak istenen yerden görünüyor olması gerekir. Yani gerekirse using ile sınıf içerisinde tanımlanmalıdır.
class Program { static void Main(string[] args) { string baslik = "Bu yazının içeriği ne kadar uzunmuş böyle."; Console.WriteLine(baslik.Kisaltma(10)); } }
Kisaltma metoduile 10 karakterden sonra “…” şeklinde devam edilmektedir. Artık istediğimiz yerde bu metodu kullanabiliriz.