robinzonejob
@robinzonejob
разработчик .NET

Как сформировать коллекцию сервисов не в лямбда-выражении .ConfigureServices(), а отдельно?

Добрый день.
Есть стандартный механизм создания хоста в .NET Core, а так же стандартный механизм конфигурирования сервисов. Выглядит он, примерно так:
public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureServices((_, services) =>
                    services.AddTransient<ITransientOperation, DefaultOperation>()
                            .AddScoped<IScopedOperation, DefaultOperation>()
                            .AddSingleton<ISingletonOperation, DefaultOperation>()
                            .AddSingleton<IConfigurator, Configurator>()
                            .AddTransient<OperationLogger>());

Но, если я хочу сначала создать коллекцию сервисов, скажем вот так:
var serviceCollection = new ServiceCollection(); 
serviceCollection
                .AddSingleton<IConfigurationRoot>(configuration)
                .AddTransient<ITransientOperation, DefaultOperation>()
                .AddScoped<IScopedOperation, DefaultOperation>()
                .AddSingleton<ISingletonOperation, DefaultOperation>()

То как мне ее потом "подсунуть" хосту?
hostBuilder.ConfigureServices((_, services) => services = serviceCollection);

Так не работает.
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
sarapinit
@sarapinit Куратор тега C#
Точу водой камень
foreach (var descriptor in serviceCollection)
{
     services.Add(descriptor);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы