![](/img/trans.png)
[英]Resolving instances with ASP.NET Core DI from within ConfigureServices
[英]ASP.NET 5 MVC 6 DI: ServiceProvider not resolving type
在下面的代碼中, serviceProvider.GetService<DocumentDbConnection>()
正在解析為null
:
public void ConfigureService(IServiceCollection services)
{
var serviceProvider = services.BuildServiceProvider();
services.AddSingleton<DocumentDbConnection>(
x => new DocumentDbConnection(uri, authKey));
// service is null?
var connection = serviceProvider.GetService<DocumentDbConnection>();
services.AddTransient<IStopRepository, StopRepository>(
x => new StopRepository(connection, databaseId, collectionId));
}
為什么會這樣? 在調用GetService
之前注冊了類型,所以它是否應該解析為單例?
在注冊DocumentDbConnection
之前,您正在構建服務提供者。 您應該首先注冊您需要的服務。 然后, BuildServiceProvider
將構建一個服務提供者,其中注冊的服務在此之前:
services.AddSingleton<DocumentDbConnection>(x => new DocumentDbConnection(uri, authKey));
var serviceProvider = services.BuildServiceProvider();
// code using serviceProvider
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.