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.2
tags
csharp, dependency-injection, language
author
Mike Fullerton
modified
2026-04-09

Change History

Version Date Author Summary
1.0.2 2026-04-09 Mike Fullerton Add trigger tags
1.0.1 2026-04-09 Mike Fullerton Reorganize into use-case directory
1.0.0 2026-03-27 Mike Fullerton Initial creation