ILogger<T>
реализует ILogger
.Вот почему вы можете назначить ILogger<T>
на ILogger
Комментарий XML для ILogger<T>
:
Обычно используется для активации активации именованного ILogger из внедрения зависимостей.
Это говорит о том, что где-то для некоторого кода нужен тип, чтобы создать для вас регистратор.
Если вы углубитесь в код для service.AddLogging()
, к нему добавляются ILoggerFactory
и ILogger<>
IServiceCollection
.ILogger<T>
имеет конкретную реализацию Logger<T>
.Logger<T>
получает вышеупомянутый ILoggerFactory
вводимый код и затем вызывает CreateLogger
, передавая отображаемое имя типа T. LoggerFactory
затем проверяет кэш уже созданных Logger
s на основе T
и возвращает его из кэшадобавив его, если он не существует.
Таким образом, в принципе, он не добавляет никаких дополнительных функциональных возможностей, но внутренне повышает производительность, сохраняя ILogger для каждого типа в кеше и передавая его вам при необходимости.<T>
необходим, потому что он используется при поиске в словаре / кэше