Abilitare la configurazione fortemente tipizzata in Blazor

di Marco De Sanctis, in ASP.NET Core,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi