Dependency Injection in ASP.NET Core Web API
🧰 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;