1

我正在尝试使用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!");
    }
}

希望可以有人帮帮我。

4

1 回答 1

1

这就是我最终解决它的方式。感谢 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();
    }
}

希望这可以帮助某人。

于 2012-04-25T09:25:11.570 回答