Negli scorsi script, abbiamo introdotto i KeyedService (https://www.aspitalia.com/script/1465/Registrare-Servizi-Multipli-Tramite-Chiavi-ASP.NET-Core.aspx), una nuova funzionalità inclusa in .NET 8 che permette di registrare diverse implementazioni dello stesso servizio e associarle a una particolare chiave.
Ovviamente sono supportati anche in Blazor, anche se purtroppo non ancora tramite la direttiva @inject che tipicamente utilizziamo per iniettare servizi nelle nostre pagine.
Immaginiamo allora di aver registrato il nostro solito servizio per il WeatherForecast, come negli esempi precedenti:
public static async Task Main(string[] args) { var builder = WebAssemblyHostBuilder.CreateDefault(args); // .. altro codice qui .. builder.Services.AddKeyedTransient<IForecastProvider, AlwaysSunnyForecastProvider>("sunny"); builder.Services.AddKeyedTransient<IForecastProvider, ForecastProvider>(KeyedService.AnyKey); await builder.Build().RunAsync(); }
Per sfruttarlo in un componente, dovremo utilizzare l'attributo Inject associato a una proprietà:
@code { private IEnumerable<WeatherForecast>? forecasts; [Inject(Key = "sunny")] private IForecastProvider ForecastProvider { get; set; } protected override async Task OnInitializedAsync() { forecasts = this.ForecastProvider.GetForecasts(); } }
Ovviamente questo vale solo per pagine Razor. In tutti gli altri casi, possiamo continuare a sfruttare la constructor injection come visto negli altri esempi.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare QuickGrid di Blazor con Entity Framework
Filtering sulle colonne in una QuickGrid di Blazor
Generare velocemente pagine CRUD in Blazor con QuickGrid
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Limitare le richieste lato server con l'interactive routing di Blazor 8
Effettuare il binding di date in Blazor
Criptare la comunicazione con mTLS in Azure Container Apps
.NET Conference Italia 2024
Configurare lo startup di applicazioni server e client con .NET Aspire
Effettuare il refresh dei dati di una QuickGrid di Blazor
Evitare il flickering dei componenti nel prerender di Blazor 8
Ordinare randomicamente una lista in C#