首页 > 解决方案 > 控制器基类中的依赖注入不起作用

问题描述

这是我的一个 Web API 控制器的示例(为清楚起见,未显示其方法):

public class TestController : ControllerBase
{
    private readonly ILogger<TestController> _logger;
    
    public TestController(ILogger<TestController> logger)
    {
        _logger = logger;
    }
}

我想使用自定义基本控制器,其他控制器将从中派生。该控制器将为所有其他控制器提供日志记录对象。这是我的新代码:

public class TestController : AppControllerBase<TestController>
{
    public TestController()
    {
    }
}

public class AppControllerBase<T> : ControllerBase // compilation error here
{
    protected readonly ILogger<T> _logger;
    
    public AppControllerBase(ILogger<T> logger)
    {
        _logger = logger;
    }
}

但是,这会导致编译错误:

CS7036
没有给出与 'AppControllerBase.AppControllerBase(ILogger) 所需的形式参数 'logger' 相对应的参数

我希望 DIILogger<TestController>在基类构造函数中提供,但似乎并非如此。

我该如何解决这个问题?

标签: c#asp.net-coreinheritancedependency-injection.net-5

解决方案


推荐阅读