アプリケーションのロギングタスク(.NET 3.5)には、社内の単純なLoggerクラスを使用しています。
ロガーコードはかなり古く、次のように設計されています。
public class Logger : ILogger
{
private ILogger instance;
private static ILogger Instance
{
// Initialized on first use.
get { return instance; }
}
public static void Debug(string msg)
{
instance.Debug(msg);
}
public static void Error(string msg)
{
....
}
}
インスタンス自体は、最初の使用時に(遅延して)初期化されています。
これは、厳密な「本による」実装によるとシングルトンではありませんが、それでも、すべての呼び出し元コードからのこのクラスへのアクセスは静的アクセスです。
テスト目的やその他のアーキテクチャ上の理由から、内部インスタンスを別のものに置き換える(注入する)ことができるようにしたいと思います。
どうすればこれを簡単に達成できますか?現時点ではIoCコンテナを使用していませんが、セッターをInstanceプロパティに公開したくないのは、シングルトンのようなデザイン全体が無効になるためです。
これに対する解決策を考え出す方法について何か提案はありますか?