C# 使用ILogger和抽象类.NET内核的依赖注入

C# 使用ILogger和抽象类.NET内核的依赖注入,c#,asp.net-core,ilogger,C#,Asp.net Core,Ilogger,我正在为我的.NET核心项目使用存储库模式。我有一个基本存储库: public abstract class RepositoryBase<T> : IRepositoryBase<T> where T : class { protected DbContext MyContext { get; set; } public RepositoryBase(DbContext context) { MyContext = contex

我正在为我的.NET核心项目使用存储库模式。我有一个基本存储库:

public abstract class RepositoryBase<T> : IRepositoryBase<T> where T : class
{
    protected DbContext MyContext { get; set; }

    public RepositoryBase(DbContext context)
    {
        MyContext = context;
    }
公共抽象类RepositoryBase:IRepositoryBase其中T:class
{
受保护的DbContext MyContext{get;set;}
公共RepositoryBase(DbContext上下文)
{
MyContext=上下文;
}
}

然后我有从基类派生的特定于实体的存储库。例如:

   public class ClientRepository : RepositoryBase<Client>, IClientRepository
{
    public ClientRepository(DbContext context)
       : base(context)
    {
    }
public类ClientRepository:RepositoryBase,IClientRepository
{
公共ClientRepository(DbContext)
:基本(上下文)
{
}
然后我有了一个存储库包装器,它实例化了所有这些特定于实体的存储库

我想让我的所有存储库访问我的记录器,我已经通过依赖注入配置了记录器

ILogger<ClientRepository>
ILogger
我以泛型形式将记录器添加到基类中,在实体类中,我以ILogger的特定形式添加了记录器。但是,在存储库包装构造函数中,我现在需要声明并注入所有这些不同类型的ILogger。无论在何处构建存储库包装,我都需要将所有这些作为args添加到中


有谁能澄清注入ILogger的正确方法,并让它通过抽象类和派生类“向下”移动吗?

有两种选择。我不知道有什么实际区别

选项A
ILogger
ILogger
是一个
ILogger

public interface ILogger<out TCategoryName> : ILogger
公共接口ILogger:ILogger
您的基本回购可以接受
ILogger

选项B
ILogger
ILogger
也是
ILogger
,因此在您的例子中,
ILogger
是一个
ILogger

基本回购可以接受
ILogger