Dependency Injection (DI) — technique for achieving loose coupling.
Built-in container in ASP.NET Core:
1// Program.cs2var builder = WebApplication.CreateBuilder(args);34// Register services5builder.Services.AddScoped<IUserService, UserService>();6builder.Services.AddSingleton<ICacheService, RedisCache>();7builder.Services.AddTransient<IEmailService, EmailService>();89var app = builder.Build();
Lifetime:
Constructor injection:
1public class OrderService2{3 private readonly IOrderRepository _repo;45 public OrderService(IOrderRepository repo)6 {7 _repo = repo;8 }9}
Benefits: