Come sappiamo, in Blazor, la configurazione è esposta tramite il servizio IConfiguration, con il quale possiamo accedere alle sezioni e ai valori all'interno di appsettings.json. Tuttavia, di solito è molto più comodo utilizzare una classe .NET per rappresentare il contenuto di questo file, così che possiamo sfruttare la tipizzazione forte quando accediamo alle impostazioni.
Questa possibilità è ancora più interessante nel caso visto nello scorso script, visto che possiamo condividere lo stesso oggetto tra client e server.
Per esempio, immaginiamo di riscrivere l'endpoint che avevamo visto in precedenza in questo modo:
[HttpGet] public ClientConfiguration Get() { return new ClientConfiguration { WelcomeMessage = "Hello from the server" }; }
Questa classe ClientConfiguration potrebbe essere inserita in una libreria condivisa tra ASP.NET Core e Blazor:
public class ClientConfiguration { public string WelcomeMessage { get; set; } }
A questo punto, in Blazor possiamo registrare ClientConfiguration nell'IoC container in questo modo:
public static async Task Main(string[] args) { //... altro codice qui ... builder.Services.AddScoped<ClientConfiguration>(sp => { var config = sp.GetService<IConfiguration>(); var result = new ClientConfiguration(); config.Bind(result); return result; }); await builder.Build().RunAsync(); }
Il codice è piuttosto semplice, e si basa sul metodo Bind di IConfiguration, tramite cui idratare il contenuto di un'istanza di ClientConfiguration in base a quanto letto dalle varie sorgenti di configurazione. Il risultato è che possiamo ora iniettare ClientConfiguration direttamente in tutti i componenti o servizi che ne abbiano bisogno:
@page "/" @inject BlazorApp11.Shared.ClientConfiguration config <h1>@this.config.WelcomeMessage</h1>
L'aspetto interessante è che questo metodo funziona a prescindere da quali e quante sorgenti di configurazione utilizziamo, siano esse file statici o endpoint come nell'esempio che abbiamo fatto.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire attività con Azure Container Jobs
Specificare il versioning nel path degli URL in ASP.NET Web API
Creare moduli CSS in React
Inizializzare i container in Azure Container Apps
Sfruttare lo streaming di una chiamata Http da Blazor
Installare le Web App site extension tramite una pipeline di Azure DevOps
Gestione degli environment per il deploy con un workflow di GitHub
Effettuare delete massive con Entity Framework Core 7
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Utilizzare database e servizi con gli add-on di Container App
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Aggiungere interattività lato server in Blazor 8
I più letti di oggi
- Impostare un elemento come ridimensionabile tramite CSS
- Proteggersi dagli attacchi di Open Redirect in ASP.NET Core MVC
- Personalizzare l'errore del rate limiting middleware in ASP.NET Core
- Accedere alla console di una Azure Container App
- Modificare i metadati nell'head dell'HTML di una Blazor Web App
- Gli oggetti CallOut di Expression Blend 4.0
- SQL Server 2005 December CTP
- Sfruttare le nuove tipologie di input di HTML5 con ASP.NET 4.0
- Upload da una pagina web con Dundas Upload