.net Core Dependency Injection Example

4 min read Jun 03, 2024
.net Core Dependency Injection Example

L'injection de dépendances dans .NET Core : un exemple concret

Introduction

L'injection de dépendances (DI) est un principe fondamental de la programmation orientée objet qui permet de découpler les composants d'une application, améliorant ainsi sa testabilité, sa maintenabilité et sa réutilisabilité. .NET Core intègre un conteneur d'injection de dépendances intégré qui simplifie considérablement la mise en œuvre de ce concept.

Un exemple pratique

Prenons un exemple simple : une application web qui affiche la date et l'heure actuelles.

1. L'interface de service

public interface IDateTimeService
{
    DateTime GetCurrentDateTime();
}

Cette interface définit un contrat pour le service qui sera responsable de la récupération de la date et de l'heure.

2. La classe de service

public class DateTimeService : IDateTimeService
{
    public DateTime GetCurrentDateTime()
    {
        return DateTime.Now;
    }
}

Cette classe implémente l'interface IDateTimeService et fournit une méthode pour obtenir la date et l'heure actuelles.

3. Le contrôleur

public class HomeController : Controller
{
    private readonly IDateTimeService _dateTimeService;

    public HomeController(IDateTimeService dateTimeService)
    {
        _dateTimeService = dateTimeService;
    }

    public IActionResult Index()
    {
        var currentDateTime = _dateTimeService.GetCurrentDateTime();
        return View(currentDateTime);
    }
}

Le contrôleur HomeController utilise le service IDateTimeService via son constructeur. Le conteneur d'injection de dépendances .NET Core injectera automatiquement une instance de DateTimeService dans le contrôleur lors de sa création.

4. L'enregistrement des services

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();
    services.AddScoped(); 
}

Dans la méthode ConfigureServices de la classe Startup, nous enregistrons le service DateTimeService en tant qu'implémentation de l'interface IDateTimeService. La durée de vie du service est définie comme Scoped, ce qui signifie qu'une nouvelle instance sera créée pour chaque requête HTTP.

Avantages de l'injection de dépendances

  • Découplage: Le code est plus facile à comprendre et à modifier car les classes ne dépendent plus directement les unes des autres.
  • Testabilité: Les services peuvent être remplacés par des mocks ou des stubs pour simplifier les tests unitaires.
  • Réutilisabilité: Les services peuvent être réutilisés dans différentes parties de l'application.
  • Maintenance: Le code devient plus facile à maintenir car les modifications apportées à un service n'affectent pas les autres parties de l'application.

Conclusion

L'injection de dépendances est une technique puissante et indispensable pour développer des applications .NET Core robustes et maintenables. En utilisant le conteneur d'injection de dépendances intégré, vous pouvez simplifier la gestion des dépendances et améliorer la qualité de votre code.