2012-04-24 3 views
1

Nlog에 의존성 주입을 추가하려고하는데 단위 테스트 목적으로 Ninject을 사용하지만 작동시키지 못합니다. :(나는 Nlog 및 Ninject에 모두 새로운 해요 GetCurrentClassLogger(). 를 호출 할 때 내가 NullReferenceException이납니다, 이것은 실제로 내 첫 번째 시간을 사용하고 있습니다. 홈페이지Ninject를 사용하여 Nlog에 의존성 주입 추가하기

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); 
    } 
} 

MyClass에

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!"); 
    } 
} 

희망 누군가가 나에게 도움이 될 수 있습니다.

답변

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(); 
    } 
} 

희망이 사람을 도움이됩니다.