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
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Gestire undefined e partial nelle reactive forms di Angular
Installare le Web App site extension tramite una pipeline di Azure DevOps
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
.NET Conference Italia 2023
Come migrare da una form non tipizzata a una form tipizzata in Angular
Miglioramenti agli screen reader e al contrasto in Angular
Generare velocemente pagine CRUD in Blazor con QuickGrid
Utilizzare gRPC su App Service di Azure
Cancellare una run di un workflow di GitHub
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Paginare i risultati con QuickGrid in Blazor
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Windows Server 2003 SP1 Italiano
- Creare un modulo e un controller con AngularJS
- Build 2014: tutte le novità per gli sviluppatori in diretta da San Francisco
- Rilasciata la versione RTM di Windows Vista SP1