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
Introduzione ai web component HTML
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Gestire gli accessi con Token su Azure Container Registry
Creare agenti facilmente con Azure AI Agent Service
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Proteggere l'endpoint dell'agente A2A delle Logic App
Utilizzare Containers in .NET Aspire
Creare una libreria CSS universale: Clip-path
Eseguire script pre e post esecuzione di un workflow di GitHub
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Integrare SQL Server in un progetto .NET Aspire
Il nuovo controllo Range di Blazor 9
I più letti di oggi
- Velocity arriva alla CTP3
- Microsoft Security Bulletin MS02-062
- Slitta la beta2 di WinFS, ma arriva la versione Live
- ASP.NET Core 2
- Cambiare il timeout di uno script
- Misurare il tempo di esecuzione di una richiesta ASP.NET con un middleware OWIN
- .NET Aspire per applicazioni distribuite
- Visualizzare il santo del giorno
- Tutorial Entity Framework 5.0


