3

環境:

私はソリューション全体で 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. この機能は後退しましたか?

4

1 に答える 1