【问题标题】:Inject Dependency in Derived Appender from AppenderSkeleton从 AppenderSkeleton 在派生的 Appender 中注入依赖
【发布时间】:2018-01-15 16:50:46
【问题描述】:

我正在我们的应用程序中实现 Log4net,对于日志记录,我正在实现 AppenderSkeleton

由于 log4net 使用配置设置解析其附加程序,我无法将我的自定义服务指定为使用构造函数或属性注入的依赖项。

我想这样做是因为我希望我的 appender 使用 MOQ 框架进行单元测试。

以下是我想要实现的代码示例。

public class LoggingAppender : AppenderSkeleton
{
    private ICustomService service;
    public LoggingAppender(ICustomService service)
    {
        this.service = service;
    }
    protected override void Append(log4net.Core.LoggingEvent loggingEvent)
    {
        service.Method("Data From loggingEvent");
    }
}

我还在stackoverflow 上找到了以下答案。但这对我来说没有用。

这个问题有什么解决方案,还是我们应该遵循任何其他方法来对其进行单元测试?

【问题讨论】:

标签: c# unit-testing dependency-injection moq log4net-appender


【解决方案1】:

@AshutoshSingh 在这种情况下,我建议在运行时添加附加程序。请参阅How to add log4net appender in runtime?(请注意,您可以在多个级别注册 appender,而不仅仅是那个)。

您还可以为 ILogger 添加工厂注册,这将在解析时添加附加程序,作为一个选项(请参阅Castle Windsor: How do I register a factory method, when the underlying type isn't accessible to my assembly?)。

无论如何,按照这些参考资料,您将获得一些可以使用的信息。

PS:没有足够的声誉在原始线程中回复:-)所以将在此处发布答案:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-08
    • 2020-01-20
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多