Dependency Injection

Constructor injection via Microsoft.Extensions.DependencyInjection. Dependencies MUST use interface types, not concrete types.

  • Transient for lightweight stateless services
  • Scoped for per-request services
  • Singleton for thread-safe shared state
  • A scoped service MUST NOT be injected into a singleton (captive dependency)
  • Use IOptions<T> / IOptionsSnapshot<T> for configuration binding
  • Keep registrations in Add*() extension methods for modularity
public static IServiceCollection AddMyFeature(this IServiceCollection services)
{
    services.AddSingleton<IFeatureManager, LocalFeatureManager>();
    services.AddTransient<IOrderService, OrderService>();
    return services;
}
version
1.0.0
tags
csharp, dependency-injection, language
author
Mike Fullerton
modified
2026-03-27

Change History

Version Date Author Summary
1.0.0 2026-03-27 Mike Fullerton Initial creation