Как залить Logger в пользовательский сервис - PullRequest
0 голосов
/ 31 мая 2019

У меня есть ImportExportService.

В классе StartUp в методе ConfigureServices я использую его как

services.AddImportExportService(Configuration.GetConnectionString("DefaultConnection"));

Экстенциальный метод AddImportExportService:

public static class IServiceCollectionExtension
    {
        public static IServiceCollection AddImportExportService(this IServiceCollection services, 
            string connString,
            ILogger<ImportExportService> logger
            )
        {
            services.AddTransient<IImportExportService, ImportExportService>(provider => new ImportExportService(connString));
            return services;
        }
    }

ExportImportService использует ведение журнала.Я попытался внедрить Logging в сервисе как param в конструкторе, подобном ILoger<ImportExportService> logger, но конструктор включает только один param и метод расширения AddImportExportService get error.

Как внедрить ведение логов в ExportImportService?Спасибо

1 Ответ

1 голос
/ 31 мая 2019
services.AddTransient<IImportExportService, ImportExportService>(provider => new ImportExportService(connString));

должно быть

services
    .AddTransient<IImportExportService, ImportExportService>(
        provider => new ImportExportService(connString, provider.GetRequiredService<ILogger<ImportExportService>>()));

при условии, что конструктор ImportExportService имеет два аргумента.Тогда расширению нужны только два аргумента:

public static IServiceCollection AddImportExportService(
    this IServiceCollection services, 
    string connString)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...