使用 Ninject 向 Nlog 添加依赖注入
本文关键字:依赖 注入 添加 Nlog Ninject 使用 | 更新日期: 2023-09-27 18:32:03
我正在尝试使用Ninject将依赖注入添加到Nlog以进行单元测试,但我无法使其工作。 :(我在调用 GetCurrentClassLogger() 时收到 NullReferenceException。我是Nlog和Ninject的新手,这实际上是我第一次使用它们。
主要
using NLog;
using Ninject;
using Ninject.Extensions.Logging;
using Ninject.Extensions.Logging.NLog2;
public class Program
{
static void Main(string[] args)
{
var kernel = new StandardKernel(new NLogModule());
var logFactory = kernel.Get<ILoggerFactory>();
var run = new MyClass(logFactory);
}
}
我的类
using Ninject.Extensions.Logging;
public class MyClass
{
private readonly ILogger _log;
public MyClass(ILoggerFactory logFactory)
{
_log = logFactory.GetCurrentClassLogger();
}
public void DoWork()
{
_log.Info("Doing work!");
}
}
希望有人能帮助我。
这就是我最终解决它的方式。感谢Claus Jørgensen在IRC:)上帮助我
显然,在使用 NLog 扩展时会有一些自动绑定,因此new StandardKernel(new NLogModule());
这样做会导致模块加载两次。
主要
using Ninject;
public class Program
{
static void Main(string[] args)
{
var kernel = new StandardKernel();
var run = kernel.Get<MyClass>();
run.DoWork();
}
}
希望这对某人有所帮助。