.Net’te eski kodlarınıza dokunmadan sınıflarınızı genişletin
Temmuz 26, 2010 at 10:35 pm 1 yorum
.Net Framework’ün 3.0dan sonraki versiyonlarında desteklenen harika bir özellik var: extension. Kelime anlamı olarak genişletmek demek olan bu güzel özellik bir class’ın eski kodlarına hiç dokunmadan hatta bu kodunuz bir dll içinde yer alıyorsa ve siz onun kaynak koduna artık müdehale etmiyorsanız bile bir eklenti yapabilmenize olanak sağlıyor. Nasıl mı? Hadi bakalım.
Kendi yazdığınız ve ağ işlemleri için kullandığınız MyNetworkAdapter isimli bir sınıfınız olsun. Bu sınıfa adresi verilen bir sayfanın kodunu çekme gibi kullanışlı bir özellik eklemek aklınıza geldi. Bunun için yapmanız gereken tek şey aşağıdaki gibi bir kodu -tabii ki namespace ve scope uyumluluklarına dikkat ederek- eklemek.
public static class MyNetworkAdapterExtension
{
public static string GetHTMLSource(this MyNetworkAdapter adapter,string url){
string source;
using(WebClient wc =new WebClient(url))
{
source = wc.DownloadString(url);
}
return source;
}
}
Yukarıdaki basit kodda dikkat edilmesi gereken hususlar:
- Yazdığınız class static olmalı
- Metod static olmalı
- Metodun ilk parametresi this anahtar sözcüğünü içermeli ki hangi sınıf ile bağlantı kurabildiğini bilsin derleyici
- Sanırım bu kadar
Bu kodu projenize ekledikten sonra yapmanız gereken başka bir noktada sınıfınzdan bir örnek yarattığınızda işbu metodu gönül rahatlığı ile kullanmak. Örneğin:
MyNetworkAdapter adapter = new MyNetworkAdapter();
string src = adapter.GetHTMLSource("http://yesilvadi.wordpress.com");
Bu zamana kadar GetHTMLSource isimli bir metoda sahip olmayan sınıfımız sorunsuzca çalışacaktır.
Entry filed under: Genel. Tags: .
1.
hend | Ekim 31, 2010, 5:16 pm
teşekkürler..