【发布时间】:2014-07-01 10:00:07
【问题描述】:
我尝试写这个类:
public class ModelManager
{
public OmniacareHomeProductionEntities _db;
public CategoriaManager categoriaManager
{
get { return categoriaManager; }
set
{
if (categoriaManager == null)
{
categoriaManager = new CategoriaManagerImpl();
}
}
}
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(ModelManager));
public ModelManager()
{
_db = new OmniacareHomeProductionEntities();
}
}
CategoriaManager 是一个接口,CategoriaManagerImpl 是一个实现 CategoriaManager 的类。
我在这种模式下使用 ModelManager 类:
ModelManager modelManager = new ModelManager();
modelManager.categoriaManager.saveLocalCategory(category, true);
所以当我尝试运行这段代码时,我在这一行出现了 StackOverflowError
get
{
return categoriaManager;
}
我的错误在哪里?你能帮帮我吗?
【问题讨论】:
-
您正在返回属性本身,因此它陷入了无限循环。使用支持变量来获取和设置属性。
-
对于此类工作,如果您使用 .NET 4.0 或更高版本,请使用 Lazy
或 LazyInitializer 相关 API
标签: c# interface stack-overflow