C# Extension Method
Extension (Genişletilebilir) metot, nesneler üzerinde spesifik iş parçacıkları (metot) oluşturmamızı sağlar. Başka bir bakış açısıyla projelerimizde kullandığımız Helper sınıf metotlarımızın direkt olarak nesne’ye tanımlanması ve nesneden erişilmesine olanak sağlar. Aslında kalıtım yoluyla bir çok nesneyi zaten genişletebiliyoruz. Örnek olarak , sadece büyük harf kabul eden bir TextBox’a ihtiyacımız varsa , TextBox sınıfından türettiğimiz yeni sınıf’a ihtiyacımız olan metodu yazabiliriz. Böylece elimizde genişletilmiş bir TextBox sınıfı olur. Uygulanabilir bir yöntem. Fakat bu yöntem ile sınıfımızın orjinalliği bozulur ayrıca kullanacağımız sınıf miras bırakmıyor ( sealed ) olabilir.
Extension Metotlar tanımlanırken statik plarak tanımlanır, metot’un ilk parametresi this anahter kelimesi ve Extension olacağı nesne olmak zorundadır. (this string value)
Şimdi String değişkenimizin numerik bir değer olup olmadığını kontrol eden bir extension ile makalemizi örneklendirelim.
1 2 3 4 5 6 7 8 9 10 11 |
public static class StringExtension { public static bool IsNumber(this string value, out int number) { return Int32.TryParse(value, out number); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
static void Main(string[] args) { string value = "15"; int retNum; bool isNumber = value.IsNumber(out retNum); Console.WriteLine("is Numeric :" + isNumber); Console.WriteLine("Numeric Value is :" + retNum); Console.ReadKey(); } OutPut : is Numeric :True Numeric Value is :15 |
Umarım faydalı olmuştur.