簡體   English   中英

使用Ninject向Nlog添加依賴項注入

[英]Adding dependency injection to Nlog using Ninject

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

希望可以有人幫幫我。

這就是我最終解決它的方式。 感謝ClausJø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();
    }
}

希望這對某人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM