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 OpenTelemetry per Application Insights su ASP.NET Core
Rendere affidabile lo scale out su Azure App Service
Utilizzare il Null conditional assignment di C# 14
Gestione dei codeowners in GitHub
Ottimizzare le API in ASP.NET con Feature Flags
Blazor e InputHidden in .NET 10
Impostare automaticamente l'altezza del font tramite CSS
Running workloads and operations with Azure Kubernetes Service
Building Custom Developer Agents
Configurare OpenAI in .NET Aspire
Creare una cache temporanea in JavaScript
Impostare la content-visibility in CSS per ottimizare il rendering iniziale di una pagina


