2012-04-24 3 views
1

Nlogに依存性注入を追加しようとしていますが、ユニットテスト目的でNinjectを使用していますが、動作させることができません。 :(GetCurrentClassLoggerを呼び出すとき I)が(とNullReferenceExceptionを取得しています。 私はNlogとNinjectの両方に新たなんだ、これはそれらを使用して、実際に私の最初の時間です。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

これは私がそれを解決した方法です。 ClausJørgensenがIRCで私を助けてくれたことに感謝します。new StandardKernel(new NLogModule());を実行するとモジュールが2度読み込まれるようになるので、NLogエクステンションを使用しているときに明らかにいくつかの自動バインドが行われているようです。

メイン

using Ninject; 
public class Program 
{ 
    static void Main(string[] args) 
    { 
     var kernel = new StandardKernel(); 
     var run = kernel.Get<MyClass>(); 
     run.DoWork(); 
    } 
} 

・ホープこれは誰かに役立ちます。

関連する問題