#blazor #blazor-webassembly
#blazor #blazor-webassembly
Вопрос:
В моем проекте я хотел бы получить всю информацию о конфигурации локально при запуске проекта. Я создал службу ConfigurationManager с внедренным в нее HttpClient. В компонентах Blazor существуют события жизненного цикла, подобные тем, OnInitializedAsync
которые вызываются при создании компонента.
protected override async Task OnInitializedAsync()
{
await ...
}
Есть ли что-то эквивалентное для служб?
Program.cs содержит следующее
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddScoped<StateManager>();
await builder.Build().RunAsync();
}
Комментарии:
1. Можете ли вы предоставить больше своего кода, чтобы получить лучшее понимание? Было бы полезно увидеть службу ConfigurationManager с внедренным в нее HttpClient.
2. Пожалуйста, уточните, в чем проблема. Нам нужны подробности о том, что не работает, и код для его воспроизведения.
Ответ №1:
Добавление диспетчера состояний с builder.Servuces.AddScoped<StateManager>()
помощью не дает ссылки на службу, поэтому невозможно вызвать нестатические методы, поэтому я попробовал это
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
var http = new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) };
builder.Services.AddScoped(sp => http);
var state = new StateManager(http);
builder.Services.AddScoped(sp => state);
await state.LoadAsync();
await builder.Build().RunAsync();
}