我正在尝试配置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))