У меня есть служба Blazor, для которой требуется указанная c служба LocalStorage. Это делается так:
public class UserApi : IUserApi
{
private readonly LocalStorage _localStorage;
public UserApi(LocalStorage localStorage)
{
_localStorage = localStorage;
}
...
}
«LocalStorage» вводится в Startup.cs (ConfigureServices
):
services.AddStorage();
(я думаю, можно с уверенностью предположить, что это работает как надо)
Я также добавил свой собственный сервис со следующей строкой:
services.AddSingleton<IUserApi, UserApi>();
На странице бритвы я ввожу свой сервис:
@inject IUserApi UserApi
и получить доступ к функции там:
private void HandleValidSubmit()
{
if (UserApi.Login( _loginUser.Mail, _loginUser.Password, out string error, out Guid? guid))
{
// DoMagic
}
}
Когда я пытаюсь запустить свое приложение, я получаю следующую ошибку:
System.AggregateException
Внутреннее исключение 1:
InvalidOperationException: Ошибка при проверке дескриптора службы 'ServiceType: BlazorFood.IUserApi Время жизни: Singleton PracticeType: BlazorFood.UserApi': не удается использовать выделенную службу 'Cloudcrate.AspNetCore.Blazor.Browser.Storage.Ltonton' fromtontoStorage BlazorFood. i '
Когда я удаляю строку AddSingleton из ConfigureServices
, я могу запустить свое приложение, но получить ошибку при попытке доступа к странице бритвы, содержащей IUserApi-Injection:
InvalidOperationException: Невозможно предоставить значение для свойства 'UserApi' для типа 'BlazorFood.Pages.admin.Login'. Не существует зарегистрированного сервиса типа «BlazorFood.IUserApi»
Что нужно сделать, чтобы правильно внедрить мои услуги?