我们正在为我们的应用程序的日志记录任务(.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)
{
....
}
}
实例本身在第一次使用时被初始化(懒惰地)。
根据其严格的“书本”实现,这不是一个 Singleton,但尽管如此,从所有调用代码对此类的访问都是静态访问。
出于测试目的和其他架构原因,我希望能够用其他东西替换内部实例(注入它)。
我怎样才能轻松实现这一目标?我们目前没有使用任何 IoC 容器,但我不想将设置器暴露给 Instance 属性,因为这会破坏整个单例式设计。
关于如何为此提出解决方案的任何建议?