Dependency Injection (DI) Nedir?
Bağımlılık enjeksiyonu (Dependency Injection — DI), bir yazılım bileşeninin, ihtiyaç duyduğu diğer bileşenleri kendisi oluşturmak veya…
Dependency Injection (DI) Nedir?

Bağımlılık enjeksiyonu (Dependency Injection — DI), bir yazılım bileşeninin, ihtiyaç duyduğu diğer bileşenleri kendisi oluşturmak veya somut bir şekilde bağımlılıklarını tanımlamak yerine, dışarıdan almasını sağlar.
- DI, bileşenler arasındaki sıkı bağları gevşetir, kodun daha esnek, yeniden kullanılabilir ve test edilebilir olmasını sağlar.
DI, genellikle aşağıdaki üç ana şekilde uygulanır:
- Constructor Injection (Kurucu Enjeksiyon): Bağımlılıklar, bir sınıfın constructor’ına parametre olarak geçirilir.
using System;
// bagimliligimizi temsil eden arayuz
public interface IServis
{
void YapilacakIslem();
}
// Bagimliligin somut implementasyonu
public class Servis : IServis
{
public void YapilacakIslem()
{
Console.WriteLine("Servis sınıfı: Yapılacak işlem gerçekleştiriliyor...");
}
}
// Bagimliligimizi bu sinifa enjekte ederiz
public class Sinif
{
private readonly IServis _servis; // bagimlilik
// Constructor Injection ile bagimliligi alir
public Sinif(IServis servis)
{
_servis = servis;
}
// Bagimliligi kullanarak bir islem gerceklestirir
public void IslemYap()
{
_servis.YapilacakIslem();
}
}
class Program
{
static void Main(string[] args)
{
// Servis sinifini kullanarak Sinif nesnesi olusturur
IServis servis = new Servis();
Sinif sinif = new Sinif(servis);
// Sinif sinifinin islemini gerceklestirir
sinif.IslemYap();
}
}
2. Setter Injection (Setter Enjeksiyon): Bağımlılıklar, ilgili sınıftaki setter metodları aracılığıyla atanır.
using System;
// bagimliligimizi temsil eden arayuz
public interface IServis
{
void YapilacakIslem();
}
// Bagimliligin somut implementasyonu
public class Servis : IServis
{
public void YapilacakIslem()
{
Console.WriteLine("Servis sınıfı: Yapılacak işlem gerçekleştiriliyor...");
}
}
// Bagimliligimizi bu sinifa enjekte ederiz
public class Sinif
{
private IServis _servis;
// Servis bagimliliginin Setter metodu
public void SetServis(IServis servis)
{
_servis = servis;
}
// Bagimliligi kullanarak bir islem gerceklestirir
public void IslemYap()
{
_servis.YapilacakIslem();
}
}
class Program
{
static void Main(string[] args)
{
IServis servis = new Servis();
Sinif sinif = new Sinif();
// Bagimliligi enjekte eder
sinif.SetServis(servis);
// Sinif sinifinin islemini gerceklestirir
sinif.IslemYap();
}
}
- Method Injection (Metot ile Enjeksiyon): Sınıfın içinde kullanılacak bağımlılık, ilgili metotlara parametre olarak verilir.
using System;
// Bagimliligimizi temsil eden arayüz
public interface IServis
{
void YapilacakIslem();
}
// Bagimliligin somut implementasyonu
public class Servis : IServis
{
public void YapilacakIslem()
{
Console.WriteLine("Servis sınıfı: Yapılacak işlem gerçekleştiriliyor...");
}
}
// Bagimliligimizi bu sinifa enjekte ederiz
public class Sinif
{
// Bagimliligi kullanarak bir islem gerceklestirir
public void IslemYap(IServis servis)
{
servis.YapilacakIslem();
}
}
class Program
{
static void Main(string[] args)
{
IServis servis = new Servis();
Sinif sinif = new Sinif();
// Bağımlılığı enjekte eder
sinif.IslemYap(servis);
}
}
Dependency Injection’ın yazılım geliştirme sürecinde sunduğu avantajları:
- Modülerlik ve Esneklik
- Yeniden Kullanılabilirlik
- Test Edilebilirlik
Bu nedenlerden dolayı, Dependency Injection modern yazılım geliştirme süreçlerinde sıkça kullanılan bir design patterndir.
메타데이터
- post_id
- 2e3bfcae968e
- slug
- dependency-injection-di-nedir-2e3bfcae968e
- url
- https://medium.com/@zehra-cakir/dependency-injection-di-nedir-2e3bfcae968e
- canonical_url
- https://medium.com/@zehra-cakir/dependency-injection-di-nedir-2e3bfcae968e
- author_url
- https://medium.com/@zehra-cakir
- status
- ok
- fetched_at
- 2026-07-09 10:05:04