ASP.NET Core Interview Question #62
What is keyed dependency injection in ASP.NET Core?
Dependency Injection & Services Junior Beginner
Quick Interview Answer
Keyed dependency injection allows multiple implementations of the same service type to be registered and selected by a key. This is useful when an application has several strategies that implement one interface.
Detailed Explanation
Keyed dependency injection allows multiple implementations of the same service type to be registered and selected by a key. This is useful when an application has several strategies that implement one interface.
Modern .NET provides keyed service registration methods such as AddKeyedScoped, AddKeyedTransient, and AddKeyedSingleton. A consumer can request a keyed implementation using FromKeyedServices or keyed resolution APIs.
Keys should represent a meaningful selection rule. If selection logic becomes complex, a strategy resolver or factory may provide a cleaner domain abstraction.
Code Example
builder.Services.AddKeyedScoped<INotificationSender, EmailSender>("email");
builder.Services.AddKeyedScoped<INotificationSender, SmsSender>("sms");
public class AlertsController : Controller
{
public AlertsController(
[FromKeyedServices("email")] INotificationSender sender)
{
_sender = sender;
}
private readonly INotificationSender _sender;
}