我有一个基于Tab的多文档界面应用程序,我有一个单独的表单,这个单一表单的对象只是该特定Tab的单例。对于其他Tab,我需要有单个表单的另一个对象,它只是该选项卡的单例对象。
我已经实现了单例模式,但所有选项卡都使用了相同的对象。
编辑:每个TAB负责一个客户的监控活动,SingleForm负责所有控件。当用户移动到监视另一个客户的其他TAB时,我的singleForm会显示以前的客户详细信息。
任何解决方案。请分享。
谢谢,
答案 0 :(得分:2)
您不能在此处使用Singleton模式。 Singleton模式确保只有一个对象,对应用程序是全局的。
(如果你详细说明一下,例如为什么你首先使用的是单身人士,你可能会得到更详细的答案。)
答案 1 :(得分:1)
看起来像一个糟糕的设计。但如果您真的必须这样做,请尝试这样的事情:
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;