Extension Methods Nedir?
Bir sınıfa method eklemek anlamına geliyor. Extension Method mutlaka static bir metod olmalı.
Metod'un ilk parametresi "this" kelimesi ile başlar. this'ten sonra gelen ikinci kelime metodun ekleneceği sınıftır. Örnekte Random sınıfına One of Metodu ekleniyor.
Bir sınıfa method eklemek anlamına geliyor. Extension Method mutlaka static bir metod olmalı.
Metod'un ilk parametresi "this" kelimesi ile başlar. this'ten sonra gelen ikinci kelime metodun ekleneceği sınıftır. Örnekte Random sınıfına One of Metodu ekleniyor.
public static T OneOf<T>(this Random rng, params T[] things)
{
return things[rng.Next(things.Length)];
}
Şöyle kullanılır.
Random rand;
string babyName = rand.OneOf("John", "George", "Radio XBR74 ROCKS!");
Extension metodları overload edilen metodlar ile aynı isimler taşımamalı. Eğer metod isimleri çakışırsa overload edilen metodlar extension metodlara göre daha yüksek önceliğe sahip oldukları için, extension metodları çağırılmazlar.
Fikrin Tarihçesi
Extension Methods çok eski bir fikir. 2000'lerde yazılmış C++ yazılarında bile Scott Meyers static non-member Helper metodları kullanılması tavsiye ediyordu.
Fikrin Tarihçesi
Extension Methods çok eski bir fikir. 2000'lerde yazılmış C++ yazılarında bile Scott Meyers static non-member Helper metodları kullanılması tavsiye ediyordu.
public class Foo
{
int _intField;
public void Method1()
{
doing something with _intField;
}
public void Method2()
{
Method1();
}
}
Bu kodu şöyle yazabiliriz.public class Foo
{
int _intField;
public void Method1()
{
doing something with _intField;
}
}
public class FooHelper
{
public void Method2(this Foo foo)
{
foo.Method1();
}
}
Görüldüğü gibi C#'ta derleyici bizim için Extension Method'u sınıfın bir parçası haline getiriyor ancak temelde C++ kodu ile aynı şey.
Hiç yorum yok:
Yorum Gönder