2015-09-15 24 views
8

çözme değil serviceProvider.GetService<DocumentDbConnection>()null çözümlendiğinden:ASP.NET 5 MVC 6 DI: ServiceProvider aşağıdaki kodu türünü

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

neden oluyor? Tip GetService den önce kaydediliyor, yani tekil olarak çözülmemeli mi?

cevap

11

hizmet sağlayıcısını önce DocumentDbConnection kayıt ettirin. İlk önce ihtiyacınız olan hizmetleri kaydetmelisiniz. Daha sonra BuildServiceProvider, o zamana kadar kayıtlı olan hizmetlere sahip bir servis sağlayıcısı kuracaktır:

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

// code using serviceProvider 
+1

Bir şekilde bunu göz ardı ettim - teşekkürler :) – davenewza