[英]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.