Я использую HostedService с AutoFac в качестве контейнера. Однако IServiceProvider .NET не может разрешать службы с использованием ключей в отличие от AutoFac.
//autofac
componentContext.ResolveKeyed<ISampleService>("debug");
//not available in .NET HostBuilder even if I used autofac as container
host.Services.GetService<ISampleService>();
Я попытался получить IComponentContext, но он возвращает ноль
host.Services.GetService<IComponentContext>();
Так я зарегистрировал услуги.
var builder = new HostBuilder()
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer<ContainerBuilder>((context, builder) =>
{
builder.RegisterType<FakeDatabase>().Named<IDatabase>("debug");
builder.RegisterType<HostedService>().Named<IHostedService>("debug");
builder.RegisterType<ActualDatabase>().As<IDatabase>();
builder.RegisterType<HostedService>().As<IHostedService>();
});
1010 * ТИА *