2017-08-21 22 views
0
IServiceCollection serviceConfiguration = ConfigureServices();  
    IServiceProvider serviceProvider = serviceConfiguration.BuildServiceProvider(); 
    IBusControl busControl = CreateServiceBus(serviceProvider); 

    IServiceCollection services = new ServiceCollection(); 
    services.AddSingleton<IBusControl>(busControl);  
    IServiceProvider serviceBus = services.BuildServiceProvider(); 

是有可能做這樣,因爲CreateServiceBus使用第一IServiceProvider的我需要它,使用它通過它注射扶養這就是爲什麼我需要2 IServiceProvider,因爲在此之後,我希望寄存器busControl作爲IBusControl我可以建造2個的IServiceProvider和他們一起工作(.NET核心)

回答

2

您可以創建一個工廠方法並在Startup.cs中進行預熱。

services.AddSingleton<IBusControl>(provider => CreateServiceBus(provider)); 

,然後 「暖」 它在Configure方法向上

public void Configure(IAppBuilder app, IBusControl bus) 
{ 
} 

public void Configure(IAppBuilder app, IBusControl bus) 
{ 
    app.Services.GetRequriedService<IBusControl>(); 
} 
相關問題