Necesito configurar la localización en Blazor WASM, .NET 6
De acuerdo con el manual , necesito usar JavaScript en el archivo Program.cs . Microsoft recomienda conectar el código de JavaScript a través del aislamiento de JavaScript en los módulos de JavaScript . Sin embargo, el código especificado en el ejemplo es el componente Blazor y allí se llama IAsyncDisposable.DisposeAsync()
¿Necesito llamar a IAsyncDisposable.DisposeAsync() en Program.cs y, de ser así, cómo hacerlo sin recurrir a la creación de la clase Program y el método Main , pero usando una nueva versión de la plantilla del programa de la consola?
La pregunta es muy tonta de mi parte. No vi la solución más obvia.
Simplemente puede llamar al método DisposeAsync() manualmente cuando el objeto ya no sea necesario.
Como resultado, el código se verá así. El código es ligeramente diferente de la plantilla , por lo que parte de la lógica se coloca en una clase separada.
using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.JSInterop; using Store.Client; using Store.Client.Engine; using System.Globalization; var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add<App>("#app"); builder.RootComponents.Add<HeadOutlet>("head::after"); builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); builder.Services.AddLocalization(); var host = builder.Build(); var js = host.Services.GetRequiredService<IJSRuntime>(); var module = await js.InvokeAsync<IJSObjectReference>("import", "./js/scripts.js"); var culture = await module.InvokeAsync<string>("getCulture"); if (culture is not null) { Culture.Current = new CultureInfo(culture); } else { Culture.Current = Culture.Default; await module.InvokeVoidAsync("setCulture", Culture.Current.Name); } await module.DisposeAsync(); await host.RunAsync();