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;
}