私はPostsharpでNLogを使ってプロジェクトをまとめています。 OnMethodBoundaryAspect属性の下位クラスを使用して、クラスを装飾し、ロギングのインターセプトされた実行を提供します。私のDIコンテナはUnityです。依存関係注入を使ってポストシャープからログ依存関係を解決する方法
したがって、DIを単独で(ServiceLocatorではなく)使用すると、ログを提供するためにアスペクトクラス内のLogオブジェクトをどのように解決できますか?過去に私はServiceLocatorを使ってログオブジェクトを解決しましたが、ServiceLocatorが本当にアンチパターンであると本当に信じ始めているので、私はそれから離れようとしています(はい、私は少し聖なるこの問題に関する戦争)。
ありがとうございます!
アップデート - NLogをラップしてSystem.Diagnostic.Trace.Listenersに追加するカスタムTraceListenerを作成することを検討しています。それで、その側面では、私はただそれに書き込むことができます。 – lstutzman
DIと容器は、AOPを行うための強固な方法を提供します。システムを正しくモデリングすると、ロギングを含むデコレータを簡単に設定できます。あるいは、そうでなくても、Unityを使ってロギングを有効にするための傍受を行うことができます。 PostSharpがまだ必要だと思うのはなぜですか? – Steven
私は以前に統一の傍受を使用していましたが、パフォーマンスのオーバーヘッドを処理できませんでした。私はポストシャープを使用しています。なぜなら、すべてのデコレータ配管コードを書かなくて済むからです。振り返ってみると、Ambient Contextパターンを使ってappdomain全体でロギングを利用できるようになるでしょう。 – lstutzman