Aller au contenu

Dependency Injection

Contexte : Une technique où un objet reçoit ses dépendances d’une source externe plutôt que de les créer lui‑même. Elle favorise un couplage lâche et la testabilité.

public interface IGreetingService
{
string Greet(string name);
}
public class GreetingService : IGreetingService
{
public string Greet(string name) => $"Hello {name}";
}
public class Consumer
{
private readonly IGreetingService _greeting;
public Consumer(IGreetingService greeting) => _greeting = greeting;
public void Print(string name) => Console.WriteLine(_greeting.Greet(name));
}
// Simple DI container
var services = new Dictionary<Type, object>();
services[typeof(IGreetingService)] = new GreetingService();
var consumer = new Consumer((IGreetingService)services[typeof(IGreetingService)]);
consumer.Print("Alice");

Injection de dépendances intégrée d’ASP.NET Core : Les services sont enregistrés dans Program.cs et injectés dans les constructeurs des contrôleurs, middlewares et services. Permet les tests unitaires en remplaçant les dépendances réelles par des mocks.

Exemple : Documentation sur l’injection de dépendances ASP.NET Core. Services courants : ILogger<T>, DbContext, IHttpClientFactory. Également des conteneurs tiers comme Autofac, Unity.