How do I use dependency injection in C#

Dependency Injection (DI) is a design pattern used to implement IoC (Inversion of Control), allowing for better modularity and testability in applications. In C#, there are various ways to implement dependency injection, including Constructor Injection, Setter Injection, and Interface Injection.

Example of Dependency Injection in C#

Below is a simple example demonstrating Constructor Injection in C#:

// Interface public interface IMessageService { void SendMessage(string message); } // Implementation of the interface public class EmailService : IMessageService { public void SendMessage(string message) { Console.WriteLine("Email sent: " + message); } } // Consumer class public class UserController { private readonly IMessageService _messageService; // Constructor Injection public UserController(IMessageService messageService) { _messageService = messageService; } public void NotifyUser(string message) { _messageService.SendMessage(message); } } // Usage public class Program { public static void Main(string[] args) { IMessageService emailService = new EmailService(); UserController userController = new UserController(emailService); userController.NotifyUser("Hello, Dependency Injection!"); } }

dependency injection C# IoC Constructor Injection software design patterns