【问题标题】:ASP.NET 5 MVC 6 DI: ServiceProvider not resolving typeASP.NET 5 MVC 6 DI:ServiceProvider 未解析类型
【发布时间】:2015-12-11 15:05:52
【问题描述】:

在下面的代码中,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 之前注册的,所以它不应该解析为单例吗?

【问题讨论】:

    标签: c# dependency-injection asp.net-core asp.net-core-mvc


    【解决方案1】:

    您在注册DocumentDbConnection 之前构建服务提供者。您应该首先注册您需要的服务。然后BuildServiceProvider 将构建一个服务提供者,在此之前注册的服务:

    services.AddSingleton<DocumentDbConnection>(x => new DocumentDbConnection(uri, authKey));
    var serviceProvider = services.BuildServiceProvider();
    
    // code using serviceProvider
    

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2016-03-08
      • 1970-01-01
      相关资源
      最近更新 更多