1

コンストラクターが次のようなクラスがあります

public class Foo(NLog.Logger logger)

私はStructureMap 2.6.4.1を使用して依存性注入を行っています (完全にコンストラクター注入を介して、プロパティ注入はありません)。ロギングにNLogを使用しています。NLog の優れた機能の 1 つは、名前を持つロガーを介してログ イベントをさまざまなターゲットにルーティングできることです。したがって、所有する型の完全修飾名に基づいてロガーに名前を付けることは非常に柔軟です (上記の例では、 になります<namespace>.Foo) 。

Castle Windsor のロギング機能は、所有するインスタンスのクラスにちなんで名付けられたロガーを必要とするインスタンスにロガーを提供します。

ただし、これを行うために StructureMap を取得できませんでした。

EnrichWith((context, type) => {})メソッドを試しましたcontext.ParentTypeが、常に null です。これが私のレジストリの例です:

public class InfrastructureRegistry : Registry
{
    public InfrastructureRegistry()
    {
        For<NLog.Logger>().Use<NLog.Logger>()
            .EnrichWith((context, pluginType) => 
                NLog.LogManager.GetLogger(context.ParentType.FullName)
            );
    }
}

私は困惑しています。やりたいことはどうすればいいですか?

4

1 に答える 1