「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
ログ出力方式 (lon4net) を NLogにリプレース。
詳細 †
コンパチ > ベースクラス2からDIする。」での実装を予定。
リプレース †
- 足回り(ライブラリ)をリプレースするだけで、設計自体は変更しない。
- ただし、NLogの定義などを一気に揃える必要がある。
コンパチ †
- コンパチブルにするには、DI行うための設計変更が必要になる。
- コレにより、log4netからNLogに、段階的に移行可能になる。
DIコンテナでは難しい。 †
- DIだと、config処理をユーザ側に持たせる必要がある。
(Program.csや、Setup.csに書かせるようなconfigをユーザ側に強いる)
- 下位スタックでDIされたLoggerを使用する場合、
共通I/Fが無いならレイトバインドするしかない。
- 共通I/Fがあれば、下位はインターフェイスのみ実装し、
config用ライブラリも含め、実体を上位からDIすることもできるのだが。
- log4netとNLogに共通のインターフェイスは無い。
- 従って、コンパチの情報もない。
- DIはユーザ・レイヤでのみ可能。
よくよく考えると、DIされたLoggerを、基盤側で使用している
ようなケースは無い(ASP.NET Coreでも無い)ですね...。
ベースクラス2からDIすれば、なんとかなりそう。
- Public(ライブラリ)側に、
共通I/F(純粋仮想関数)を定義する。
- Business(ベースクラス2)側に、
- 共通I/Fを継承した、ManagerとLoggerを定義する。
- Businessで初期化を行い、PublicにDIする。
- Publicの共通I/F(純粋仮想関数)経由でログ出力する。
参考 †
マイクロソフト系技術情報 Wiki †
OpenTouryoProject?/OpenTouryo? †