ServiceCollection: коллекция была изменена; операция перечисления может не выполняться
У меня странная проблема с моим контейнером внедрения зависимостей, он отображается только при первом запуске приложения (я имею в виду первый раз, когда клиент запрашивает мой API)
код моего класса обработчика внедрения зависимостей:
using Microsoft.Extensions.DependencyInjection;
using AutoMapper;
public static class BusinessServicesProvider
{
private static ServiceCollection _serviceCollection;
private static ServiceProvider _serviceProvider;
private static bool _init = false;
private static void Init()
{
_serviceCollection= new ServiceCollection();
var mapper = BusinessServices.EntityMapper.Mapper;
RegisterServices(mapper);
_init = true;
}
public static T GetService<T>()
{
if(_serviceCollection == null && !_init)
{
Init();
}
var service = BusinessServicesProvider._serviceProvider.GetService<T>();
return service;
}
private static void RegisterServices(IMapper mapper)
{
_serviceProvider = _serviceCollection
.AddSingleton<IUsersService, UserService>()
.AddSingleton<IMessagesService, MessagesService>()
.AddSingleton<IUserDetailsDictionaryService, UserDetailsDictionaryService>()
.AddSingleton<IUserFinderService, UserFinderService>()
.AddSingleton<IFriendshipService, FriendshipService>()
.AddSingleton<IAuthenticationService, AuthenticationService>()
.AddScoped<IMapper>(c=>mapper)
.BuildServiceProvider();
}
}
и ошибка:
System.InvalidOperationException: 'Коллекция была изменена; операция перечисления может не выполняться.'
это показывает при методе RegisterServices