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
Ottenere un token di accesso per una GitHub App
Filtering sulle colonne in una QuickGrid di Blazor
Change tracking e composition in Entity Framework
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Eliminare una project wiki di Azure DevOps
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Testare l'invio dei messaggi con Event Hubs Data Explorer
Creare una libreria CSS universale: i bottoni
Implementare l'infinite scroll con QuickGrid in Blazor Server
Cambiare la chiave di partizionamento di Azure Cosmos DB
Eseguire script pre e post esecuzione di un workflow di GitHub
Escludere alcuni file da GitHub Secret Scanning