Dependency Injection (DI) to technika programowania, w której obiekty są dostarczane innym obiektom automatycznie, zamiast tworzyć je samodzielnie. W ASP.NET Core, Dependency Injection jest integralną częścią frameworku i jest szeroko używane w tworzeniu aplikacji webowych, w tym API.

Oto, jak działa Dependency Injection w ASP.NET Core Web API:

  1. Rejestracja Usług:

    Pierwszym krokiem jest zarejestrowanie usług (obiektów) w kontenerze DI. Można to zrobić w metodzie ConfigureServices klasy Startup.cs. Przykład rejestracji usługi, która obsługuje operacje na bazie danych:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<MyDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        services.AddScoped<IMyRepository, MyRepository>();
        services.AddTransient<IMyService, MyService>();
    }
    
  2. Wstrzykiwanie Usług:

    W kontrolerach lub innych komponentach, które obsługują żądania HTTP, możesz wstrzyknąć zarejestrowane usługi do konstruktora. Na przykład:

    [ApiController]
    [Route("api/[controller]")]
    public class MyController : ControllerBase
    {
        private readonly IMyService _myService;
    
        public MyController(IMyService myService)
        {
            _myService = myService;
        }
    
        // ...
    }
    

    Dzięki wstrzykiwaniu usługi, nie musisz tworzyć obiektu IMyService samodzielnie; ASP.NET Core dostarcza go za Ciebie.

  3. Dostęp do Usług:

    Teraz, gdy masz zarejestrowane usługi i wstrzyknięte je do odpowiednich kontrolerów lub komponentów, możesz wywoływać metody tych usług w swoim kodzie. Na przykład, możesz użyć _myService w kontrolerze do pobierania lub modyfikowania danych, obsługi logiki biznesowej itp.

Dependency Injection w ASP.NET Core Web API ma wiele korzyści, takich jak:

Dependency Injection to ważny element projektowania aplikacji w ASP.NET Core Web API, który pomaga zwiększyć elastyczność, testowalność i jakość kodu.

Materiały

Dependency injection in ASP.NET Core

Dependency injection - .NET

Dependency Injection for Absolute Beginners with C# and .NET