我正在尝试配置Unity以将ILog注入到我的类中,其中LogManager.CreateLogger()中的类型/名称设置为要注入ILog的类。

这是similar question,但用于结构图

最佳答案

我知道这个答案很晚,但是最近遇到了这个问题。

现在有一个NuGet包UnityLog4NetExtension,用于注册log4net.ILog接口和一些Unity构建策略,这些策略允许您仅注入ILog接口并让Unity使用要注入的类创建它。

该代码也可以通过GitHub获得。

例如:

在需要注入ILog实例之前,请将扩展添加到unity容器。我已经在引导程序中完成了此操作。



//add the extension to the unity container
container.AddNewExtension<Log4NetExtension>();


然后,只需注入ILog界面即可使用

public class MyClass
{
    private readonly ILog _logger;

    public MyClass(ILog loggerForMyClass)
    {
        _logger = loggerForMyClass;
    }
}


该代码的工作方式就像我写了_logger = LogManager.GetLogger(typeof(MyClass))

07-26 04:29