top of page

C# Dependency Injection

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • Aug 31, 2012
  • 3 min read

Dependency Injection (DI) aslinda bir tasarım şablonu olarak bilinmektedir ve genel amacı nesneler arasında bulunan bağımlılıkları azaltarak kullandığı İnterface'ler sayesinde implement edilen içerikler artık daha farklı bir şekilde işleyişte bulunabileceklerdir. Olayı daha iyi anlayabilmemiz için aynı mantıkta oluşturulmuş olan uygulamayı farklı yöntemlerle inceleyelim. Uygulamalarımızı Console Application tarafında yapalım. Daha açıklayıcı olabilmesi içinde Class Diagram'larını sizlerle paylaşıyor olacağım. Öncelikle Personel isminde bir sınıf olluşturalım. Oluşturduğumuz bu sınıf içerisinde personellere ait id, isim ve meslek bilgilerini saklayabileceğimiz tanımlamalarımız olsun. Daha sonra bu oluşturmuş olduğumuz sınıf aracılığıyla new parametresi ile veriler oluşturuyoruz. Ve bunları listeye atıyoruz. Yazdır sınıfımız ile de oluşturmuş olduğumuz listeyi ekrana yazdırabilmemiz için çağırmış oluyoruz.

Program.CS Kaynak Kodu;

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace NanonunGunlugu001 { class Personel { public int Id { get; set; } public string Isim { get; set; } public string Meslek { get; set; } } class ListeOlustur { public List<Personel> PersonelListele() { return new List<Personel> { new Personel{Id = 1, Isim = "Sevdanur GENC", Meslek="Yazılım Geliştirici"}, new Personel{Id = 2, Isim = "Selcuk GENC", Meslek="Yazılım Test Uzmanı"} }; } } class Yazdir { ListeOlustur yaz = new ListeOlustur(); public List<Personel> PersonelListele() { return yaz.PersonelListele(); } } class Program { static void Main(string[] args) { var EkranaYazdir = new Yazdir(); Console.WriteLine(EkranaYazdir.PersonelListele()<0>

.Isim + " " + EkranaYazdir.PersonelListele()<0>

.Meslek); Console.WriteLine(EkranaYazdir.PersonelListele()<1>

.Isim + " " + EkranaYazdir.PersonelListele()<1>

.Meslek); Console.ReadLine(); } } }

Ekran Görüntüsü;

          Görüldüğü gibi birbirine bağımlı bir şekilde çalışan sınıf ve tiplerin kullanımını basit bir şekilde uygulamış olduk. Peki bunu Interface'leri kullanarak nasıl yapabiliriz aşağıda inceleyelim.

Program.Cs Kaynak Kodlari ;

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace NanonunGunlugu001 { class Personel { public int Id { get; set; } public string Isim { get; set; } public string Meslek { get; set; } }

    interface IListeOlustur

    {

        List<Personel> PersonelListele();

    }

class IlkListe :

IListeOlustur

{ public List<Personel> PersonelListele() { return new List<Personel> { new Personel { Id = 1, Isim = "Sevdanur GENC", Meslek = "Yazılım Geliştirici" } }; } } class IkinciListe :

IListeOlustur

{ public List<Personel> PersonelListele() { return new List<Personel> { new Personel { Id = 2, Isim = "Selcuk GENC", Meslek = "Yazılım Test Uzmanı" } }; } } class Yazdir :

IListeOlustur

{ private IListeOlustur yaz;

        public Yazdir(IListeOlustur ListeAl)

        {

            this.yaz = ListeAl;

        }

public List<Personel> PersonelListele() { return yaz.PersonelListele(); } } class Program { static void Main(string[] args) {

var IlkEkranaYazdir = new Yazdir(new IlkListe());

            Console.WriteLine(IlkEkranaYazdir.PersonelListele()<0>.Isim + " " + IlkEkranaYazdir.PersonelListele()<0>.Meslek); 

var IkinciEkranaYazdir = new Yazdir(new IkinciListe()); Console.WriteLine(IkinciEkranaYazdir.PersonelListele()<0>

.Isim + " " + IkinciEkranaYazdir.PersonelListele()<0>

.Meslek); Console.ReadLine(); } } }

Ekran Görüntüsü ;

          This parametresi ile listeyi interface'ler yardımı ile kullanıcıya göstermiş oluyoruz. Şimdi ise Set parametresini kullanarak verilerimizi interface'ler aracılığıyla çekmeye çalışalım.

Program.Cs Kaynak Kodlari ;

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace NanonunGunlugu001 { class Personel { public int Id { get; set; } public string Isim { get; set; } public string Meslek { get; set; } }

interface IListeOlustur

    {

        List<Personel> PersonelListele();

    }

class IlkListe : IListeOlustur { public List<Personel> PersonelListele() { return new List<Personel> { new Personel { Id = 1, Isim = "Sevdanur GENC", Meslek = "Yazılım Geliştirici" } }; } } class IkinciListe : IListeOlustur { public List<Personel> PersonelListele() { return new List<Personel> { new Personel { Id = 2, Isim = "Selcuk GENC", Meslek = "Yazılım Test Uzmanı" } }; } } class Yazdir : IListeOlustur { private IListeOlustur yaz;

   public IListeOlustur ListeAl { set { yaz = value; } }

public List<Personel> PersonelListele() { return yaz.PersonelListele(); } } class Program { static void Main(string[] args) {

  var IlkEkranaYazdir = new Yazdir();

            IlkEkranaYazdir.ListeAl = new IlkListe();

            Console.WriteLine(IlkEkranaYazdir.PersonelListele()<0>.Isim + " " + IlkEkranaYazdir.PersonelListele()<0>.Meslek);

            var IkinciEkranaYazdir = new Yazdir();

IkinciEkranaYazdir.ListeAl = new IkinciListe();

Console.WriteLine(IkinciEkranaYazdir.PersonelListele()<0>.Isim + " " + IkinciEkranaYazdir.PersonelListele()<0>.Meslek);

Console.ReadLine(); } } }

Ekran Görüntüsü ;

          Keyifli Çalışmalar Dilerim.

Recent Posts

See All
Windows Azure Nedir?

Windows Azure, hizmet yönetim ortamlarını ve servislerini barındırarak geliştirilmiş bulut teknolojilerinin oluştuğu bir işletim sistemi gibi düşünülebilir. Windows azure, Microsoft veri merkezleri

 
 
 
Navigation - Navigasyon

Kullanıcıların Metro Style uygulamalarında kolay bir şekilde kullanabilmeleri ve sayfalar arası geçişleri daha sezgizel bir şekilde yapabilmeleri için geliştirilmiş bir yöntemdir. Bu özellik sayesinde

 
 
 
Accelerometer - İvme Ölçerler

Accelerometer olarak bilinen İvme Ölçerler’in sahip olduğu gömülü donanımsal sensör sistemleri ile akıllı telefonlar ve tabletler gibi cihazların donanımında kullanılmaktadır. Windows 8 Metro Style’d

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page