0

タブベースのマルチドキュメントインターフェイスアプリケーションがあり、単一のフォームがあります。この単一のフォームのオブジェクトは、その特定のタブに対してのみシングルトンです。他のタブについては、そのタブ専用のシングルトンオブジェクトである単一フォームの別のオブジェクトが必要です。

シングルトンパターンを実装しましたが、すべてのタブで同じオブジェクトが使用されています。

編集:各TABは、1人の顧客とのアクティビティの監視を担当し、SingleFormはすべてのコントロールをホストします。ユーザーが別の顧客を監視している他のTABに移動すると、私のsingleFormに以前の顧客の詳細が表示されます。

任意の解決策。シェアしてください。

ありがとうございました、

4

2 に答える 2

2

ここではシングルトンパターンを使用できません。シングルトンパターンは、アプリケーションに対してグローバルなオブジェクトが1つだけであることを保証します。

(たとえば、そもそもなぜシングルトンを使用しているのかなど、少し詳しく説明すると、より詳細な回答が得られる可能性があります。)

于 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 に答える