コンストラクターが次のようなクラスがあります
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)
);
}
}
私は困惑しています。やりたいことはどうすればいいですか?