Constructor injection, bir class’ın constructor metoduna bağımlı nesneleri eklemek gerektiği zaman kullanılır. Bir örnek üzerinde inceleyelim :
Employee adında bir class create edelim. Bu class’da ekleme metodu olsun ve loglama kullanalım.
interface Ilogger
{
void Log();
}
class DataBaseLogger : Ilogger
{
public void Log()
{
Console.WriteLine("Logged to database.");
}
}
class FileLogger : Ilogger
{
public void Log()
{
Console.WriteLine("Logged to file.");
}
}
class EmployeeManager
{
public Ilogger Logger { get; set; }
public void Add()
{
Logger.Log();
Console.WriteLine("Added!");
}
Bu methodu aşağıdaki şekilde çalıştırırsak :
static void Main(string[] args)
{
EmployeeManager employee = new EmployeeManager();
employee.Logger = new DataBaseLogger();//burda loglama nereye yapılacak belirtilmesi gerek.
Console.ReadLine();
}
Output :

Loglama metodunu daha iyi bir şekilde kullanmak istersek constructor injection ile yapmalıyız.
class EmployeeManager2
{
private Ilogger _logger { get; set; }
public EmployeeManager2(Ilogger logger)
{
_logger = logger;
}
public void Add()
{
_logger.Log();
Console.WriteLine("Added!");
}
}
Metodu çağıralım :
static void Main(string[] args)
{
EmployeeManager employee = new EmployeeManager();
employee.Logger = new DataBaseLogger();//burda loglama nereye yapılacak belirtilmesi gerek.
employee.Add();//ekleme yapılacak.
EmployeeManager2 employee2 = new EmployeeManager2(new FileLogger());
employee2.Add();
Console.ReadLine();
}
Output :
