Csharp – Interface kullanıma örnek

Kitap adında bir class ımız olsun ve üzerinde integer değer alan ve geri dönüş değeri string olan bir indexer ımız bulunsun.

Kitap dan türettiğimiz BilgisayarKitabi class ımız üzerindede aynı şekilde bir indexer bulunsun aynı şekilde EdebiyatKitabi vs. bir çok Kitap classından türeyen classlarımız olsun ve hepsinde de aynı imzalı ve geri dönüş değerine sahip indexerlar bulunsun.

Şimdi böyle bir senaryoda bize Kitap dan türeyen bir class ın örneği olduğuna emin olduğumuz bir nesne gelsin, ve bu nesne üzerindeki indexer dan gerekli bilgiyi almamız gerektiğini düşünelim.

Şu şekilde yaparsak işimiz çözülüyor gibi:

void KitapIsle(Kitap ktp)

{

MessageBox.Show(ktp[1]);

}

Ancak burada ulaştığımız indexer Kitap classında tanımlı olan indexer bize ise gelen nesnenin kendi classında bulunan indexer lazım çünkü ikisi birbirinden farklı işlemler yapıyorlar. Böyle bir durumda yapılabilecek şeylerden birisi Interface kullanmak ve gelen nesneyi Interface e cast etmek yani:

interface IKoseliDeneme

{

string this[int sayfaNo]

{

get;

set;

}

}

Şeklinde bir interface imiz olduğunu düşünürsek :

void KitapIsle(Kitap ktp)

{

IKoseliDeneme kitabim = (IKoseliDeneme)ktp;

MessageBox.Show(kitabim[1]);

}

Şeklinde yazdığımızda interface her iki class Kitap,EdebiyatKitabi ında implement edilmiş olsa dahi kitabim dan ulaştığımız indexer nesnenin asıl Classındaki indexer olacaktır.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">