2016-07-07 14 views

cevap

8

Günlüğü DI

için aşağıdaki hizmetleri ekler:

public class Foo 
{ 
    private ILogger _logger; 

    public Foo(ILogger<Foo> logger) 
    { 
     _logger = logger; 
    } 
} 

ama logger boş olacak şekilde, aşağıdaki çalışmıyor

ve Logger<>, DI'den ILoggerFactory'a bağlıdır.

İkinci senaryonuz için, ILogger yerine ILoggerFactory'yi enjekte etmeniz gerekir. @KiranChalla söylediği gibi LoggingServiceCollectionExtensionsILogger<> kayıtlı olduğu ILogger (see source code) den ILogger<> devralır

public interface ILogger<out TCategoryName> : ILogger 
{ 

} 

Ama (değil ILogger) böylece ikinci senaryosu çalışmıyor çünkü

public Foo(ILoggerFactory loggerFactory) 
{ 
    _logger = loggerFactory.CreateLogger("logger name here"); 
} 
0

İlk senaryosu çalışır.