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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare i primary constructor di C# per inizializzare le proprietà
Short-circuiting della Pipeline in ASP.NET Core
Installare le Web App site extension tramite una pipeline di Azure DevOps
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Usare lo spread operator con i collection initializer in C#
Eseguire i worklow di GitHub su runner potenziati
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Effettuare il refresh dei dati di una QuickGrid di Blazor
Minimal API in ASP.NET Core 8