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
Configurare lo startup di applicazioni server e client con .NET Aspire
Fornire parametri ad un Web component HTML
La gestione della riconnessione al server di Blazor in .NET 9
Eseguire script pre e post esecuzione di un workflow di GitHub
Gestire la cancellazione di una richiesta in streaming da Blazor
Anonimizzare i dati sensibili nei log di Azure Front Door
Creare una libreria CSS universale: i bottoni
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Gestire gli accessi con Token su Azure Container Registry
Path addizionali per gli asset in ASP.NET Core MVC
Change tracking e composition in Entity Framework
Eseguire query in contemporanea con EF