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

0 ответов

Другие вопросы по тегам