Usare un KeyedService di default in ASP.NET Core 8

di Marco De Sanctis, in ASP.NET Core,

Nello scorso script (https://www.aspitalia.com/script/1465/Registrare-Servizi-Multipli-Tramite-Chiavi-ASP.NET-Core.aspx) abbiamo introdotto i KeyedService, una nuova modalità di registrazione di servizi nell'IoC Container di ASP.NET Core 8 tramite cui diverse implementazioni di un servizio possono essere associate a una chiave specifica.

Nel caso volessimo un'implementazione di fallback, possiamo registrarla nel modo seguente, sfruttando la chiave speciale KeyedService.AnyKey:

builder.Services.AddKeyedTransient<IForecastProvider, AlwaysSunnyForecastProvider>("sunny");
builder.Services.AddKeyedTransient<IForecastProvider, DefaultForecastProvider>(KeyedService.AnyKey);

In questo modo, DefaultForecastProvider verrà ritornato in tutti i casi in cui la chiave non venga trovata:

public WeatherForecastController([FromKeyedServices("whatever")] IForecastProvider provider)
{
    _provider = provider; // <-- DefaultForecastProvider
}

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi