Я тестирую Blazor и сейчас пытаюсь получить контроль над сервисами и пользовательскими сервисами.
Проблема в том, что я получаю это сообщение об ошибке при запуске приложения Blazor:
WASM: System.InvalidOperationException: невозможно разрешить службу для
введите "Blazor.Extensions.Storage.Interfaces.IStorage" при попытке
активировать «BlazorTest.Services.MyLocalStorage».
- Мой собственный пользовательский сервис
MyLocalStorage
требуется другой сервис для доступа к локальному хранилищу браузеров; в этом случае я использую Blazor.Extensions.Storage
- Согласно этой странице на docs.microsoft.com , для настраиваемой службы, которая зависит от другой службы, необходим конструктор для ее поддержки: «Вместо этого необходимо использовать внедрение конструктора. Требуемые службы добавляются добавление параметров в конструктор сервиса. Когда внедрение зависимостей создает сервис, он распознает сервисы, которые ему требуются в конструкторе, и предоставляет их соответствующим образом. "
Итак, мой ConfigureServices
в Startup.cs
выглядит так:
public void ConfigureServices(IServiceCollection services)
{
services.AddStorage(); // <-- extension method for Blazor.Extensions.Storage
services.AddSingleton<IMyLocalStorage, MyLocalStorage>();
}
и мой таможенный сервис:
public interface IMyLocalStorage
{
Task<string> GetAuthToken();
Task<string> GetDeviceUUID();
Task SetAuthToken(string authToken);
Task SetDeviceUuid(string deviceUuid);
}
public class MyLocalStorage : IMyLocalStorage
{
private readonly IStorage storage;
public MyLocalStorage(IStorage storage)
{
this.storage = storage;
}
// bla bla implementation
}
Я думал, что это было единственное, что требовалось, но все равно не получается, как видно выше.
Обратите внимание, что если я пропущу свое собственное настраиваемое обслуживание и напрямую использую пакет Blazor.Extensions.Storage
, он будет работать без проблем.
Я использую VS2019 Preview 16.2.0 и .NET Core 3.0.0.