gpt4 book ai didi

c# - 使用依赖注入(inject)的 ILogger 的基类类型

转载 作者:行者123 更新时间:2023-12-03 13:53:39 25 4
gpt4 key购买 nike

我有一个基类可以做一些工作,包括日志记录。我在构造函数中注入(inject)了一个 ILogger 依赖项

public abstract class BaseClassExample
{
protected readonly ILogger<BaseClassExample> logger;

public BaseClassExample(ILogger<BaseClassExample> logger)
{
this.logger = logger;
}
}

而且我想让类实现 BaseClassExample,并且也做自己的工作,包括日志记录。
public class DerivedClass : BaseClassExample
{
protected readonly ILogger<DerivedClass> logger;

public DerivedClass(ILogger<DerivedClass> logger)
{
this.logger = logger;
}
}
这是正确的做事方式吗?我应该获取实现类的类型以记录基类吗?我应该有一个单独的记录器实例(具有 DerivedClass 的类型)还是尝试使用与基类相同的记录器?

最佳答案

在您的基类中使用非通用 ILogger,但 ILogger<DerivedClass>在您的派生类中。这样,如果需要,您可以简单地将 ILogger 传递给您的基类:

public abstract class BaseClassExample
{
private readonly ILogger logger;

public class BaseClassExample(ILogger logger)
{
this.logger = logger;
}
}


public class DerivedClass : BaseClassExample
{
private readonly ILogger<DerivedClass> logger;

public class BaseClassExample(ILogger<DerivedClass> logger)
:base(logger)
{
this.logger = logger;
}
}

这样,如果您以某种方式最终得到两个派生类,您不仅可以更轻松地使用它,您还可以在这两个派生类中使用 ILogger。

关于c# - 使用依赖注入(inject)的 ILogger<T> 的基类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60344757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com