0

我有一个基于选项卡的多文档界面应用程序,并且我有一个表单,这个表单的对象是仅针对该特定选项卡的单例。对于其他选项卡,我需要另一个单一形式的对象,它是仅用于该选项卡的单例对象。

我已经实现了单例模式,但所有选项卡都使用了相同的对象。

编辑:每个 TAB 负责监视与一个客户的活动,SingleForm 托管所有控件。当用户移动到正在监视另一个客户的其他 TAB 时,我的 singleForm 会显示以前的客户详细信息。

任何解决方案。请分享。

谢谢你,

4

2 回答 2

2

您不能在此处使用单例模式。单例模式确保只有一个对象,对您的应用程序是全局的。

(如果您详细说明一下,例如,为什么首先使用单例,您可能会得到更详细的答案。)

于 2012-07-26T09:56:53.593 回答
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;
于 2012-07-26T10:08:05.963 回答