Mid SOLID

Can you explain DIP with an example in C#?

❌ Without DIP (Tightly Coupled):

public class FileLogger

public void Log(string message) => Console.WriteLine("File log:

" + message);

public class OrderService

private readonly FileLogger _logger = new FileLogger();

public void ProcessOrder()

// Logic

_logger.Log("Order processed.");

  • OrderService is tightly coupled to FileLogger.

✅ With DIP (Loosely Coupled via Abstraction):

public interface ILogger

void Log(string message);

public class FileLogger : ILogger

public void Log(string message) => Console.WriteLine("File log:

" + message);

public class OrderService

private readonly ILogger _logger;

public OrderService(ILogger logger)

_logger = logger;

public void ProcessOrder()

// Logic

_logger.Log("Order processed.");

Now OrderService depends on the abstraction (ILogger), not the concrete

FileLogger. You can easily substitute with DatabaseLogger, ConsoleLogger, or a

mock in tests.

More from Design Patterns in C#

All questions for this course