環境:
私はソリューション全体で Enterprise Library 6 と Unity 3 を使用して、横断的な問題を管理し、依存性注入を管理するための軽量コンテナーとして使用しています。カスタム トレース リスナーを開発する必要があります。そのカスタム トレース リスナーに依存関係を挿入する必要があります。
この機能は、Enterprise Library 5 および Unity 2 で利用できます。次のリンクは、それを実現する方法の良い例を示しています (私自身の要件は、リンクで概説されているものとほとんど同じです)。
Unity / EntLib: CustomTraceListener への依存関係の注入
ただし、次の理由により、Enterprise Library 6 への移行は簡単ではないようです。
Ent Lib 6 の TraceListenerData クラスは、以下に対するオーバーライドを使用できなくなりました。
GetCreationExpression()
...方法。Ent Lib 6 では、新しい機能が次の場所で提供されます。
CoreBuildTraceListener()
...方法。私の理解では、Ent Lib 5GetCreationExpression()
では、Unity コンテナーが解決されたときに置換できる返された式に「マーカー」を配置できました。newCoreBuildTraceListener()
は、Trace Listener の新しいインスタンスを返します。
また、Enterprise Library は Unity コンテナーを使用してインスタンスを解決しなくなりました。:
EnterpriseLibraryCoreExtension
...削除されました。新しいアプローチは、次のようなものになります。
container.RegisterInstance(logWriterFactory.Create());
ただし、私にとってこれは、Unity コンテナーを介してインターフェイスを解決するための呼び出しを行う前に、(logWriterFactory.Create() で) CoreBuildTraceListener() が呼び出されることを意味します。
質問:
Enterprise Library 6 と Unity 3 を使用して、次のいずれかを実行できますか?
a. 適切なタイミングでメソッド内の Unity コンテナーを取得します。CoreBuildTraceListener()
これにより、カスタム トレース リスナーが作成されたときに、カスタム トレース リスナーに挿入する必要がある適切なインターフェイスを見つけることができます。
b. 私が知らない同じ最終目標を達成するための新しいアプローチはありますか (可能であれば、簡単な例を提供していただけますか?) または...
c. この機能は後退しましたか?