代码之家  ›  专栏  ›  技术社区  ›  Marc Vitalis

如何从HostBuilder获取AutoFac的IComponentContext

  •  0
  • Marc Vitalis  · 技术社区  · 7 年前

    //autofac
    componentContext.ResolveKeyed<ISampleService>("debug");
    
    //not available in .NET HostBuilder even if I used autofac as container
    host.Services.GetService<ISampleService>();
    

    我尝试获取IComponentContext,但它返回null

    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>();
       });
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   Travis Illig    7 年前

    尝试解决问题 ILifetimeScope -这将为您提供Autofac范围,您可以从中解析键控内容。请注意,这是服务位置,而不是DI,但它会起作用。

    推荐文章