Dependency Injection in ASP.NET Core Web API

Advanced Updated June 17, 2025

🧰 Dependency Injection in ASP.NET Core Web API

ASP.NET Core is built on a powerful dependency injection (DI) framework.

🧪 Example: Injecting a Repository

public interface IProductRepository
{
    IEnumerable<Product> GetAll();
    Product? Get(int id);
    void Add(Product product);
    void Update(Product product);
    void Delete(int id);
}

public class InMemoryProductRepository : IProductRepository
{
    private readonly List<Product> _products = new();
    public IEnumerable<Product> GetAll() => _products;
    public Product? Get(int id) => _products.FirstOrDefault(p => p.Id == id);
    public void Add(Product product) => _products.Add(product);
    public void Update(Product product)
    {
        var existing = Get(product.Id);
        if (existing != null)
        {
            existing.Name = product.Name;
            existing.Price = product.Price;
        }
    }
    public void Delete(int id)
    {
        var product = Get(id);
        if (product != null) _products.Remove(product);
    }
}

Register it in Program.cs:

builder.Services.AddSingleton<IProductRepository, InMemoryProductRepository>();

Then inject into controller:

private readonly IProductRepository _repo;
public ProductsController(IProductRepository repo) => _repo = repo;