【发布时间】:2014-02-06 10:29:10
【问题描述】:
对不起标题,我会尽力更好地解释这个问题。 我为我的 log4net 实例创建了一个包装器,我使用以下构造函数实例化了这个记录器:
public MyLogger(string _dbName)
{
dbName = _dbName;
logger = LoggerConfigurator.AddNamedLogger(dbName);
}
现在的问题是:这个构造函数在两个不同的类中实例化,所以一些消息日志被打印了两次。
仅当先前的实例不存在时,我才需要创建一个新实例,否则返回该实例。一种单例模式。问题是单例模式不接受参数,所以我没有办法传递_dbName。按照最佳做法,我该如何处理?
【问题讨论】:
-
为什么不使用 Singleton x = Singleton.GetInstance(params object[] parameters);或创建使用参数集初始化单例的 Init 方法? x.Init(params object[] 参数);
-
甚至更好 - 使用 IoC 容器!在那里你可以定义,只有一个类型
<T>的实例应该用于所有依赖于它的类。看看:msdn.microsoft.com/en-us/library/ff648211.aspx
标签: c# design-patterns