我有一个基于选项卡的多文档界面应用程序,并且我有一个表单,这个表单的对象是仅针对该特定选项卡的单例。对于其他选项卡,我需要另一个单一形式的对象,它是仅用于该选项卡的单例对象。
我已经实现了单例模式,但所有选项卡都使用了相同的对象。
编辑:每个 TAB 负责监视与一个客户的活动,SingleForm 托管所有控件。当用户移动到正在监视另一个客户的其他 TAB 时,我的 singleForm 会显示以前的客户详细信息。
任何解决方案。请分享。
谢谢你,
您不能在此处使用单例模式。单例模式确保只有一个对象,对您的应用程序是全局的。
(如果您详细说明一下,例如,为什么首先使用单例,您可能会得到更详细的答案。)
看起来是个糟糕的设计。但是,如果您真的必须这样做,请尝试以下操作:
public class GlobalSingletoneLocator
{
private static Dictionary<int,TabOnlyObject> _collection = new Dictionary<int, TabOnlyObject>();
//Do all singleton initialization
// ....
public TabOnlyObject GetServiceByTabID(uint id)
{
//initialize and return the new instance of class you tried to use
if(!_collection.ContainsKey(id))
{
var service = new TabOnlyObject();
_collection.Add(id, service);
}
return _collection[id];
}
}
在你的标签中你可以做
var service = GlobalSingletoneLocator.Instance.GetServiceByTabID(this.Id);
代替
var service = SingletonService.Instance;