2

私は Ninject のログ拡張機能 (v3.0) を NLog (v2.0) で試しています。私が読んだことから、何も設定する必要はありません。これは自動魔法のようなもので、必要なのはdo は、ILogger必要な場所で依存関係を宣言することです。

nlog.config既に持っていたファイルを保持し、ロガーを作成するすべてのコードを削除し、代わりにILoggerクラスのコンストラクターに入れました。

ActivationExceptionコンポジション ルートで ...Ninject can't resolve が表示されますILogger

私は何が欠けていますか?

私が持っているものは、本質的にこれに要約されます:

public static void Main(string[] args)
{
    // nothing special here, binds IMyApp to MyApp.
    using (var kernel = new StandardKernel(new NinjectConfig()))
    {
        var app = kernel.Get<IMyApp>(); // MyApp has a ILogger dependency **blows up here**
        app.Run(args);
    }
}

これは価値のあるコンソール アプリです...ロギング拡張機能はこのように動作するはずですか?


ドキュメントには次のように記載されています。

タイプインスタンスをリクエストする前に、カーネルが新しい Log4NetModule または NLogModule をロードしていることを確認してください

しかし、私がこれを行うと:

    using (var kernel = new StandardKernel(new NLogModule(), new NinjectConfig()))
    {
        ...

...ReSharper は何が何であるかを知りませんNLogModule

4

1 に答える 1

0

nuget パッケージをダウンロードするだけでNinject.Extensions.Loggingは不十分です。

また、インターフェイスをバインドするために必要なクラスNinject.Extensions.Logging.nlog2を含む のnuget パッケージをダウンロードする必要があります。NLogModuleILogger

利用可能な log4net ロギング用の利用可能な nuget パッケージもあります。

これ:

var kernel = new StandardKernel(new NinjectConfig())

すべてを機能させるために必要なのはそれだけです - を明示的にロードする必要はありませんnew NLogModule().

于 2013-09-16T17:18:29.257 に答える