如何在自定义服务中注入Logger

Ste*_*sch 0 c# asp.net-core

我有导入导出服务。

在方法ConfigureServices 的StartUp 类中,我将其用作

services.AddImportExportService(Configuration.GetConnectionString("DefaultConnection"));
Run Code Online (Sandbox Code Playgroud)

扩展方法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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

ExportImportService 使用日志记录。我尝试将日志记录作为构造函数中的参数注入ILoger<ImportExportService> logger,但构造函数仅包含一个参数,并且扩展方法 AddImportExportService 出现错误。

如何在ExportImportService中注入Logging?谢谢

n0r*_*0rd 5

services.AddTransient<IImportExportService, ImportExportService>(provider => new ImportExportService(connString));
Run Code Online (Sandbox Code Playgroud)

应该

services
    .AddTransient<IImportExportService, ImportExportService>(
        provider => new ImportExportService(connString, provider.GetRequiredService<ILogger<ImportExportService>>()));
Run Code Online (Sandbox Code Playgroud)

假设 的构造函数ImportExportService有两个参数。那么扩展只需要两个参数:

public static IServiceCollection AddImportExportService(
    this IServiceCollection services, 
    string connString)
Run Code Online (Sandbox Code Playgroud)