Constructor Injection C#

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 :

Yorum bırakın