I Know IoC is a design principle which recommends the inversion of different kinds of controls in object-oriented design to achieve loose coupling between application classes. But I have confilct with the following code:
  static void Main(string[] args)
        {
            ProductService ProductService = new ProductService(new LogInDB());
            ProductService.Log();
            Console.ReadKey();
        }
  public class ProductService
        {
            private readonly Ilog log;
            public ProductService(Ilog _log)
            {
                log = _log;
            }
            public void Log()
            {
                log.Log();
            }
        }
        public interface Ilog
        {
            void Log();
        }
        public class LogInFile : Ilog
        {
            public void Log()
            {
                Console.WriteLine("Log Into File");
            }
        }
        public class LogInDB : Ilog
        {
            public void Log()
            {
                Console.WriteLine("Log Into Data Base");
            }
        }
What is difference between previous and next code In the first code I used IOC (and added product service) but next I'm using just late binding but i see IOC not added any value
static void Main(string[] args)
        {
            Ilog logObj = new new LogInDB();
            logObj.Log();
 //I still able to using LogInDB
               //Ilog logObj = new new LogInDB();
               //logObj.Log();
            Console.ReadKey();
        }
       
        public interface Ilog
        {
            void Log();
        }
        public class LogInFile : Ilog
        {
            public void Log()
            {
                Console.WriteLine("Log Into File");
            }
        }
        public class LogInDB : Ilog
        {
            public void Log()
            {
                Console.WriteLine("Log Into Data Base");
            }
        }
 
    